是否存在gsl_matrix_isnull的EIGEN等价物?

时间:2015-11-29 15:50:14

标签: c++ eigen

Eigen中是否有函数用于测试矩阵是否消失?和GSL中的gsl_matrix_isnull一样?我已经搜索了很长一段时间,但没有发现这样的事情。

如果没有,有没有比直接检查每个元素更快的事情?

如果我忽略它,谢谢你,对不起。

2 个答案:

答案 0 :(得分:2)

我认为没有确切的等价物,但有多种方法可以表达同等的表达方式。请考虑以下事项:

Eigen::MatrixXd mt(4, 4);
std::cout << mt << "\n";
std::cout << mt.array().isApproxToConstant(0.0, 1e-15) << "\n";
mt *= 0.;
std::cout << (mt.array().abs() < 1e-15).all() << "\n";
std::cout << mt.array().isApproxToConstant(0.0, 1e-15) << "\n";
std::cout << mt.array().cwiseEqual(0.0).all() << "\n";

isApproxToConstant将所有元素与第一个参数进行比较,精度为秒。 (mt.array().abs() < 1e-15).all()检查相同,但必须接近零。如果您想要完全为0,请使用mt.array().cwiseEqual(0.0).all()

答案 1 :(得分:2)

要完成Avi的回答,isZero(eps)基本上是(mat.array().abs()<=eps).all()的快捷方式,例如:

if(mat.isZero()) { ... }