是否有一个好的实践来检查我的结果Eigen::Matrix4f是否几乎是恒等式?由于浮点错误,我有时不会得到精确的只有零和一的时间。
一种强力方法是,检查矩阵中的每个值是否在特定的EPSILON之间,如果其中只有一个失败,则它不是单位矩阵。有更好的解决方案吗?
首先,您必须定义它们在什么意义上"接近"。根据你的具体任务,亲密度可以有很多不同的定义。其中最常用的是:
norm( A - I ) < eps
其中CCD_ 1是某个矩阵范数。最常见的有2-范数、1-范数、inf范数和Frobenius范数。
你的方法也是可行的。它等价于上述具有最大范数的方法(其中norm(A) = max abs Aij
)。它可以在Eigen中实现,使用:
(A - Matrix4f::Identity()).cwiseAbs().max() < eps;
更新:实际上,在Eigen中有一种特殊的方法来检查:isIdentity
。你给它一个阈值:
A.isIdentity(eps)