1
有沒有好的做法來檢查我的結果Eigen :: Matrix4f幾乎是身份?由於由於浮點錯誤,我不會只有幾次完全只有零和一些。如何檢查Eigen :: Matrix4f是否接近單位矩陣?
一個蠻力方法是檢查矩陣中的每個值,如果它在某個EPSILON之間,並且只有其中一個失敗,那麼它不是一個單位矩陣。有更好的解決方案嗎?
有沒有好的做法來檢查我的結果Eigen :: Matrix4f幾乎是身份?由於由於浮點錯誤,我不會只有幾次完全只有零和一些。如何檢查Eigen :: Matrix4f是否接近單位矩陣?
一個蠻力方法是檢查矩陣中的每個值,如果它在某個EPSILON之間,並且只有其中一個失敗,那麼它不是一個單位矩陣。有更好的解決方案嗎?
首先,你必須定義他們應該「接近」的意義。根據您的具體任務,可能有許多不同的親密定義。其中最常用的是:
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)
謝謝你的回答!我沒有找到isIdentity函數,謝謝指出! – Silex