簡體   English   中英

opencv matlab svd返回不同的結果

[英]opencv matlab svd return different result

在我的Opencv中,我寫道

 float a[12] = {1,2,3,4,5,6,7,8,9,10,11,12};
    cv::Mat M = cv::Mat(3,4,CV_32F,a);
    cv::Mat e,U,V;
    cv::SVDecomp(M, e, U, V, cv::SVD::FULL_UV);
    transpose(V,V);
    cout<<v<<endl;

我得到了V矩陣:

   0.40361759    0.73286617    0.3848317    0.38974935

   0.46474412    0.2898497    -0.22260696  -0.80650246

   0.52587074   -0.1531668    -0.70928121   0.44375682

   0.58699721   -0.59618312    0.54795656  -0.027003769

但是在matlab中,我寫道:

>> M = [1 2 3 4; 5 6 7 8;9 10 11 12];
>> [U,e,V] = svd(M,0)

結果是:

-0.4036    0.7329    0.4453    0.3190

-0.4647    0.2898   -0.8314   -0.0934

-0.5259   -0.1532    0.3270   -0.7701

-0.5870   -0.5962    0.0591    0.5445

為什么最后兩列完全不同? 我該如何解決?

由於矩陣M的秩僅為2,因此最后兩列向量無關緊要。

嘗試使用滿秩矩陣,例如M = [1,2,-1,4;5,-6,7,8;-9,10,11,12;17,43,21,-9]; 您將得到正確的答案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM