2013-06-05 31 views
0

我嘗試在兩個版本的matlab上實現與svd函數相同的矩陣F. 但是,我發現兩種解法的U和V矩陣的符號是相反的。 我可以知道哪個版本的MATLAB提供了更好或更準確的答案? 或實際上這兩個答案是正確的?svd值在matlab 2011b和2012b之間不同

+1

這兩個答案都是正確的,並且彼此都很好。實現中的符號通常是不同的。請參閱http://stackoverflow.com/questions/5935893/any-reason-why-octave-r-numpy-and-lapack-yield-different-svd-results-on-the-sa http://stackoverflow.com/ question/16053380/svd-computing-different-result-in-matlab-and-opencv and http://www.mathworks.com.au/matlabcentral/newsreader/view_thread/297670 – Bull

回答

1

矩陣的奇異值分解只能定義爲一個符號,因此UV的符號是任意的,兩個答案都是正確的。無論MATLAB產生哪種符號,它應該仍然是F = U*S*V,所以UV構成了正確的奇異值分解F。 (注意「a」,而不是「the」)。

你不應該依靠MATLAB來產生特定的符號,它可能因版本而異。