Eigen中是否有函數用於測試矩陣是否消失?像GSL中的gsl_matrix_isnull一樣?我搜索了一段時間,但沒有發現這種情況。有沒有與gsl_matrix_isnull等價的EIGEN?
如果不是,有什麼比直接檢查每個元素更快嗎?
謝謝你,對不起,如果我忽略它。
Eigen中是否有函數用於測試矩陣是否消失?像GSL中的gsl_matrix_isnull一樣?我搜索了一段時間,但沒有發現這種情況。有沒有與gsl_matrix_isnull等價的EIGEN?
如果不是,有什麼比直接檢查每個元素更快嗎?
謝謝你,對不起,如果我忽略它。
我不認爲有一個確切的等值,但有多種方式的等價表達式。考慮以下幾點:
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()
。
要完成阿維的答案,有isZero(eps)這基本上是一個捷徑(mat.array().abs()<=eps).all()
,例如:
if(mat.isZero()) { ... }
我每天都學到一些東西。 –