检查 Eigen::Matrix 的任何元素是否不为零

Check if any element of Eigen::Matrix is different from zero

我有一个 Eigen::Matrix<double, Dynamic, Dynamic>,我需要检查它的任何元素是否不同于 0。

我尝试了以下代码:

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

但是我遇到了编译错误。

Invalid operands to binary expression ('const Eigen::Matrix' and 'double')

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

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

另一种选择是

bool f = !m.isZero();

它应该适用于 ArrayMatrix