2015-12-07 52 views
1

有沒有好的做法來檢查我的結果Eigen :: Matrix4f幾乎是身份?由於由於浮點錯誤,我不會只有幾次完全只有零和一些。如何檢查Eigen :: Matrix4f是否接近單位矩陣?

一個蠻力方法是檢查矩陣中的每個值,如果它在某個EPSILON之間,並且只有其中一個失敗,那麼它不是一個單位矩陣。有更好的解決方案嗎?

回答

4

首先,你必須定義他們應該「接近」的意義。根據您的具體任務,可能有許多不同的親密定義。其中最常用的是:

norm(A - I) < eps 

其中norm一些matrix norm。最常見的是2-範數,1-範數,inf-norm和Frobenius範數。

你的方法也是可能的。它等於上面的方法與max-norm(其中norm(A) = max abs Aij)。它可以在使用本徵來實現:

(A - Matrix4f::Identity()).cwiseAbs().max() < eps; 

更新: 其實,在本徵有檢查的特殊方法:isIdentity。你給它的門檻值:

A.isIdentity(eps) 
+0

謝謝你的回答!我沒有找到isIdentity函數,謝謝指出! – Silex

相關問題