| MATLAB Function Reference | ![]() |
奇異值分解(Singular value decomposition)
Syntax
s = svd(X) [U,S,V] = svd(X) [U,S,V] = svd(X,0)
Description
[U,S,V] = svd(X)
會產生一個與 X 維度相同的對角矩陣 S(非負的對角線元素會以遞減順序排列),和兩個么正矩陣 U、V 使得 X = U*S*V'。
[U,S,V] = svd(X,0)
會產生 "economy size" 的分解。若 X 是一個 m-by-n 矩陣且 m > n, 則 svd 只會算 U 的前 n 行且 S 為 n-by-n矩陣。
Examples
X =
1 2
3 4
5 6
7 8
[U,S,V]=svd(X)
U =
-0.1525 -0.8226 -0.3945 -0.3800
-0.3499 -0.4214 0.2428 0.8007
-0.5474 -0.0201 0.6979 -0.4614
-0.7448 0.3812 -0.5462 0.0407
S =
14.2691 0
0 0.6268
0 0
0 0
V =
-0.6414 0.7672
-0.7672 -0.6414
[U,S,V]=svd(X,0)
U =
-0.1525 -0.8226
-0.3499 -0.4214
-0.5474 -0.0201
-0.7448 0.3812
S =
14.2691 0
0 0.6268
V =
-0.6414 0.7672
-0.7672 -0.6414
Algorithm
svd 是用 LAPACK routines 來計算矩陣的 Singular value decomposition 。
| Matrix |
Routine |
| Real |
DGESVD |
| Complex |
ZGESVD |
Diagnostics
求奇異值時,要是限制最多的 QR step iterations 為75,會出現以下訊息:
Solution will not converge.
References
[1] Anderson, E., Z. Bai, C. Bischof, S. Blackford, J. Demmel, J. Dongarra, J. Du Croz, A. Greenbaum, S. Hammarling, A. McKenney, and D. Sorensen, LAPACK User's Guide (http://www.netlib.org/lapack/lug/ lapack_lug.html), Third Edition, SIAM, Philadelphia, 1999.
| surfnorm | svds | ![]() |