2015-11-29 59 views
1

Eigen中是否有函數用於測試矩陣是否消失?像GSL中的gsl_matrix_isnull一樣?我搜索了一段時間,但沒有發現這種情況。有沒有與gsl_matrix_isnull等價的EIGEN?

如果不是,有什麼比直接檢查每個元素更快嗎?

謝謝你,對不起,如果我忽略它。

回答

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()

2

要完成阿維的答案,有isZero(eps)這基本上是一個捷徑(mat.array().abs()<=eps).all(),例如:

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

我每天都學到一些東西。 –

相關問題