opencv中反转的结果不正确

时间:2014-04-09 15:42:42

标签: c++ matlab opencv matrix invert

我在c ++中使用opencv库进行矩阵求逆。我使用带有DECOMP_SVD标志的函数invert。对于不是单数的矩阵,它使用SVD方法计算。

然而,当我将它与Matlab中的输出进行相同的反演时,它给出了奇异矩阵(行列式= 0)的错误答案。

答案是1e + 4的差距!

我在matlab中使用的方法是pinv()和svd()。 pinv()使用moore-Penrose方法。 需要帮忙 提前谢谢!

示例:

original =

    0.2667    0.0667   -1.3333    2.2222
    0.0667    0.0667   -0.0000    0.8889
   -1.3333   -0.0000    8.8889   -8.8889
    2.2222    0.8889   -8.8889   20.7408


Inverse from matlab =

   1.0e+04 *

    9.8888   -0.0000    0.7417   -0.7417
   -0.0000    9.8888   -0.7417   -0.7417
    0.7417   -0.7417    0.1113    0.0000
   -0.7417   -0.7417    0.0000    0.1113

1 个答案:

答案 0 :(得分:3)

你的矩阵病态(弱主对角线)。 尝试增加主对角元素,我认为,错误应该减少。