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