Arrays 如何在多维数组上使用any()?

Arrays 如何在多维数组上使用any()?,arrays,matlab,matrix,multidimensional-array,any,Arrays,Matlab,Matrix,Multidimensional Array,Any,我正在测试一个任意大、任意维数的逻辑数组,我想知道其中是否有一个或多个是真的any()一次只能在单个维度上工作,正如sum()一样。我知道我可以测试维度的数量,然后重复any(),直到得到一个答案,但我想要一种更快、更优雅的方法 想法 我正在运行2009a(我想用旧的说法是R17)。如果您的数据位于矩阵a中,请尝试以下方法: anyAreTrue = any(A(:)); 编辑:为了给不熟悉语法的人解释得更清楚一些,a(:)使用获取数组a的全部内容,不管维度是什么,并将其重塑为单个列向量(大小

我正在测试一个任意大、任意维数的逻辑数组,我想知道其中是否有一个或多个是真的
any()
一次只能在单个维度上工作,正如
sum()
一样。我知道我可以测试维度的数量,然后重复
any()
,直到得到一个答案,但我想要一种更快、更优雅的方法

想法


我正在运行2009a(我想用旧的说法是R17)。

如果您的数据位于矩阵a中,请尝试以下方法:

anyAreTrue = any(A(:));

编辑:为了给不熟悉语法的人解释得更清楚一些,a(:)使用获取数组a的全部内容,不管维度是什么,并将其重塑为单个列向量(大小为numel(a)-by-1)。只需调用一次即可对生成的列向量进行操作。

如前所述,正确的解决方案是将结果重新塑造为向量。然后,任何一个都将给出所需的结果。因此,

任何(A(:))

给出全局结果,如果任何numel(A)元素为真,则为真。你也可以用

任何(重塑(A,[],1))

它显式使用“重塑”操作符。如果你不想做额外的步骤,将你的矩阵转换成向量来应用任何函数,那么另一种方法就是写一个你自己的函数。例如,这里有一个函数可以为您执行此操作:

======================

函数结果=myany(A)

%确定A中的任何元素是否为非零

结果=任何(A(:)

======================

将此保存为搜索路径上的m文件。MATLAB(适用于任何编程语言)的优点在于它是完全可扩展的。如果您希望它具有某种功能,只需编写一个小的习语即可。如果您经常这样做,您将定制环境以满足您的需要