我无法理解这段代码的作用:
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]
但我仍然感到困惑,结果很暗..请问有什么解释吗?
答案 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()功能。