Matlab和任何,理解上的困难

时间:2012-02-11 16:29:12

标签: c++ matlab any armadillo

我无法理解这段代码的作用:

if any(scale==0)
   loglik = -inf;

我必须使用Armadillo库将其翻译成C ++,它没有any函数,所以我想知道如何去做。

我已阅读matlab manuals,但仍然令人困惑。 然后我尝试了这个测试用例:

if any([*]==0)
   1
else
   0
end

使用as *那些值(以及更多):

[0 0;0 0]
[1 0;0 0]
[1 0;1 0]
[1 0;0 1]
[1 1;1 1]

但我仍然感到困惑,结果很暗..请问有什么解释吗?

2 个答案:

答案 0 :(得分:2)

Matlab(和Armadillo)代表0的{​​{1}}和false的{​​{1}}(或者1的非0)的布尔值。它们都定义了一个基于矩阵/向量的true运算符,它可以进行分量比较,并输出一个布尔矩阵。 ==正在接受布尔矩阵并检查是否有非零值。

犰狳似乎没有any,但确实提供any,可用于实施find

any

是等效的(尽管可能更慢):它构造一个至多一个非零元素(documentation for find)的向量。如果它为空,则没有非零元素,因此!find(X, 1).is_empty() 将返回false。

答案 1 :(得分:0)

从版本3.910开始,Armadillo具有any()功能。