到這個博客爲止,我一直認爲如果K是一個對稱陣,那麼K的svd分解:
[U,S,V]=svd(K)
U和V是肯定相同的。例如:
K=
0.1590 0.2108 0.3175
0.2108 1.1254 1.1389
0.3175 1.1389 1.5209
其svd分解爲:
>> [U,S,V]=svd(K)
U =
-0.1572 0.4260 -0.8910
-0.6336 -0.7355 -0.2399
-0.7575 0.5268 0.3855
S =
2.5393 0 0
0 0.1876 0
0 0 0.0783
V =
-0.1572 0.4260 -0.8910
-0.6336 -0.7355 -0.2399
-0.7575 0.5268 0.3855
可以看出U和V完全相同。但是現在我發現這個常識不對,也就是說對稱陣的SVD分解後U和V不一定相同,例如:
K =
0 0 0.3175
0 0 1.1389
0.3175 1.1389 0
其svd分解爲:
[U,S,V]=svd(K)
U =
0 0.2686 -0.9633
0 0.9633 0.2686
-1.0000 0 0
S =
1.1823 0 0
0 1.1823 0
0 0 0
V =
-0.2686 0 -0.9633
-0.9633 0 0.2686
0 1.0000 0
可以看出U和V不同。爲什麼這樣,這個要去查書才知道,這裏我發現有一種方法可緩解這個問題,就是讓對角元素不是0,而是一個非常接近0的數。例如
置K(1,1)=0.0000000001。
K =
0.0000 0 0.3175
0 0 1.1389
0.3175 1.1389 0
>> [U,S,V]=svd(K)
U =
-0.1899 -0.1899 -0.9633
-0.6811 -0.6811 0.2686
-0.7071 0.7071 0.0000
S =
1.1823 0 0
0 1.1823 0
0 0 0.0000
V =
-0.1899 0.1899 -0.9633
-0.6811 0.6811 0.2686
-0.7071 -0.7071 0.0000