我正在测试一个任意大、任意维度的逻辑数组,我想知道其中是否有一个或多个是正确的。any()
一次只适用于一个维度,sum()
. 我知道我可以测试维度的数量并重复any()
,直到我得到一个答案,但我想要一种更快、坦率地说、更优雅的方法。
想法?
我正在运行 2009a(我认为,用旧的说法,R17)。
我正在测试一个任意大、任意维度的逻辑数组,我想知道其中是否有一个或多个是正确的。any()
一次只适用于一个维度,sum()
. 我知道我可以测试维度的数量并重复any()
,直到我得到一个答案,但我想要一种更快、坦率地说、更优雅的方法。
想法?
我正在运行 2009a(我认为,用旧的说法,R17)。
正如所指出的,正确的解决方案是将结果重塑为向量。然后任何将给出所需的结果。因此,
任何(A(:))
给出全局结果,如果任何 numel(A) 元素为真,则为真. 你也可以使用
任何(重塑(A,[],1))
它显式地使用了 reshape 运算符。如果您不希望将矩阵转换为向量以应用任何额外的步骤,那么另一种方法是编写您自己的函数。例如,这是一个可以为您执行此操作的函数:
=======================
函数结果 = myany(A)
% 确定 A 中的任何元素是否非零
结果 = 任何(A(:));
=======================
将其保存为搜索路径上的 m 文件。MATLAB 的美妙之处(适用于任何编程语言)是完全可扩展的。如果您希望它具有某些功能,只需编写一个实现它的小习语即可。如果您经常这样做,您将定制环境以满足您的需求。