是否有一个很好的做法来检查我的结果Eigen :: Matrix4f是否几乎是同一性?由于浮点错误,我没有得到一些时间只有零和一。
一种强力方法是检查矩阵中的每个值,如果它在某个EPSILON之间,如果只有其中一个失败,则它不是一个单位矩阵。有更好的解决方案吗?
答案 0 :(得分:5)
首先,你必须定义它们应该“接近”的意义。根据您的具体任务,可以有许多不同的亲密度定义。其中最常用的是:
norm( A - I ) < eps
其中norm
是matrix norm。最常见的是2范数,1范数,inf范数和Frobenius范数。
您的方法也是可行的。它等同于上面使用max-norm(其中norm(A) = max abs Aij
)的方法。它可以使用以下方式在Eigen中实现:
(A - Matrix4f::Identity()).cwiseAbs().max() < eps;
<强>更新强>:
实际上,在Eigen中有一种特殊方法可以检查:isIdentity
。你给它门限值:
A.isIdentity(eps)