将多维数组中的元素条件减少为 Matlab 中的一个逻辑变量的最优雅方法是什么?对于一个有很多 if 条件和断言的大型项目,我需要这个。在关于逻辑数组和查找数组元素的 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() 这样的函数在没有冒号 (:) 的情况下只能将顺序减少一维,但是使用冒号就不可能索引数组的一部分......