I wonder why there is sign difference in result for SVD computing in Matlab and OpenCV. I input the same matrix
3.65E+06 -2.09E+06 0
YY = -
Which version of OpenCV are you using?
From http://code.opencv.org/issues/1498 it seems recent versions of OpenCV no longer use LAPACK to do SVD (as used by Matlab, I think). So the assumption that the same algorithm is being used might not be correct.
Of course YY=USV'
If you negate the first columns of U and V:
U(:,1)=-U(:,1);
V(:,1)=-V(:,1)
You will find USV' still equals YY. This works for your particular case because YY is symmetric (YY=YY').