2013-06-05 9 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/을 참조하십시오. questions/16053380/svd-computing-different-result-in-matlab-and-opencv 및 http://www.mathworks.com.au/matlabcentral/newsreader/view_thread/297670 – Bull

답변

1

행렬의 특이 값 분해는 부호까지만 정의되므로 UV의 부호는 임의적이며 두 응답이 모두 정확합니다. MATLAB이 생성하는 기호 중 어느 것이 든 여전히 F = U*S*V 인 경우가 있으므로 UVF의 올바른 단일 값 분해를 구성합니다. ("a"가 아니라 "the"에주의하십시오.)

특정 기호를 생성하는 MATLAB을 사용해서는 안되며 버전마다 다를 수 있습니다.