MATLAB Function Reference | ![]() ![]() |
表示
s = svd(X) [U,S,V] = svd(X) [U,S,V] = svd(X,0)
詳細
[U,S,V] = svd(X)
は、X
と同じ大きさで、非負の対角要素を降順にもつ行列 S
と、X
=
U*S*V'
を満たすユニタリ行列 U
と V
を出力します。
[U,S,V] = svd(X,0)
は、メモリを節約した分解を行います。X
が、m
行 n
列で、m
> n
の場合、U
の最初の n
列のみが計算され、S
は n
行 n
列になります。
例題
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
アルゴリズム
svd
は、LAPACK ルーチンを使って、特異値分解を計算します。
行列 |
ルーチン |
実数 |
DGESVD |
複素数 |
ZGESVD |
注意
特異値を求めるために、75 回の QR ステップの繰り返しの限界を超えると、つぎのメッセージが表示されます。
Solution will not converge.
参考文献
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, Third Edition, SIAM, Philadelphia, 1999.
![]() | surfnorm | svds | ![]() |