Каков самый элегантный способ уменьшить поэлементные условия в многомерных массивах до одной логической переменной в Matlab? Мне нужно это для большого проекта с большим количеством условий и утверждений. В документации Matlab о логических массивах и найти элементы массива удовлетворительного решения этой проблемы не существует.
Например, логическая переменная myBool
истинна тогда и только тогда, когда в матрицах A
и B
на одной позиции стоят две единицы:
A = [0,1;0,0]
B = [0,1;1,0]
Мое предпочтительное решение до сих пор:
myBool = any(A(:)==1 & B(:)==1)
Но это не похоже на самое короткое решение и не работает с индексацией массива.
Более короткое, но не очень читаемое решение:
myBool = any(A(B==1))
Самая большая проблема заключается в том, что для многомерных массивов такие функции, как nnz(), уменьшают порядок только на одно измерение без двоеточия (:), но с двоеточием невозможно проиндексировать часть массива...