我正在测试一个任意-大,任意确定尺寸列logicals,我想了解如果 任何一个或更多 他们是真实的。 any() 只是工作上的一个单一的尺寸的时间,因为不会 sum().我知道,我可以测试的数量的尺寸和重复 any() 直到我得到一个单一的答案,但我想更快,并且坦率地说,更优雅的方法。

想法?

我运行,2009年a(R17,在老的说法,我认为)。

有帮助吗?

解决方案

如果你的数据是在一个矩阵 一个, ,试试这个:

anyAreTrue = any(A(:));

编辑: 解释一点任何人都不熟悉的语法 A(:) 使用 结肠操作员 采取的全部内容列 一个, 无论什么样的尺寸,重塑他们成为一个单列的载体(大小为numel(A)-通过-1).只有一个呼叫 任何 所需要的操作上得到塔矢量。

其他提示

正如所指出的,正确的解决方案是将结果重塑到载体中。那么任何会给期望的结果。因此,

任何(A(:))

给出全局结果,真要是任何numel的(A)的元素是真实的。你也可以使用了。

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

,它使用操作人员重塑明确。如果你不希望这样做转换的矩阵转换成向量应用任何额外的步骤,那么另一种方法是写自己的函数。例如,这里是一个函数,它会为你做它:

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

函数结果= myany(A)

%确定,如果在所有所述的任何要素是非零

结果=任何(A(:));

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

保存为您的搜索路径上的m文件。 MATLAB的美(存在于任何一种编程语言)是它是完全可扩展的。如果有一些功能,你希望它有,只是写一点成语做的。如果你这样做往往不够,你会定制,以满足您的需求环境。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top