2014-04-09 63 views
1

我在C++中使用opencv庫進行矩陣反轉。我用DECOMP_SVD標誌使用函數invert。對於非奇異的矩陣,使用SVD方法進行計算。在opencv中反轉結果不正確

但是,當我將它與Matlab中的輸出與同一個反演進行比較時,它給了我一個奇異矩陣(行列式= 0)的不正確答案。

答案是關閉的1e + 4!

我在matlab中使用的方法是pinv()和svd()。 012vpinv()使用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 

回答

3

你的矩陣是病態的(弱主對角線)。 試着增加主要的對角元素,我認爲這個錯誤應該會減少。

+0

謝謝,我添加了1E-5到主對角元素,並且給了我正確的結果! – MonsieurBeilto