opencv中的cvSVD函数与matlab中的svd函数计算结果相反(奇异值分解问题)

                  昨天要实现一个idea,需要用到opencv中的svd分解。 为了对比也采用matlab的svd进行分解。

te =

     3     2     2
     2     3    -2

>> [u,w,v]=svd(te)

u =

   -0.7071   -0.7071
   -0.7071    0.7071


w =

    5.0000         0         0
         0    3.0000         0


v =

   -0.7071   -0.2357   -0.6667
   -0.7071    0.2357    0.6667
   -0.0000   -0.9428    0.3333

opencv中的svd是按照这个方式:

cvSVD(te,w,u,v)与matlab中的(u,w,v)是不一样的,请注意顺序,其次我发现了opencv中的u,v与matlab的u,v刚好相反,想差一个负号,不过不影响最终结果。

不管是opencv还是matlab,要恢复原来的那个矩阵te=U W VT,注意一个转置。

你可能感兴趣的:(matlab,idea)