如何检查特征::Matrix4f是否接近单位矩阵



是否有一个好的实践来检查我的结果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)

相关内容

  • 没有找到相关文章

最新更新