2015-12-02 50 views
2

不同我有一个Eigen::Matrix<double, Dynamic, Dynamic>,我需要检查任何元素是从0检查本征::矩阵的任何元素为从零

不同我尝试以下的代码:

Matrix<double, Dynamic, Dynamic> m; 
bool f = (m != 0.0).any(); 

但我有一个编译器错误。

无效的操作数的二进制表达式(“const的本征::矩阵”和“双”)

+0

不相关的错误,但你应该为零通过'(ABS(M) user463035818

回答

4

在本征,大部分的逐元素的操作是由一个Array类处理。幸运的是,有一种简单的方法可以在Matrix对象上使用它们。尝试

bool f = (m.array() != 0.0).any(); 
+0

是否阵列()方法创建一个新的对象?我担心表演。 – Nick

+1

不是。它只是将现有对象视为一个数组。 –