我在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
答案 0 :(得分:3)
你的矩阵病态(弱主对角线)。 尝试增加主对角元素,我认为,错误应该减少。