matlab中svd函数用法总结

来源:互联网 发布:二维数组是线性结构吗 编辑:程序博客网 时间:2024/05/16 06:44

1、帮助文档

svd

Singular value decomposition

Syntax

s = svd(X)
[U,S,V] = svd(X)
[U,S,V] = svd(X,0)
[U,S,V] = svd(X,'econ')

Description

The svd command computes the matrix singularvalue decomposition.

s = svd(X) returns a vectorof singular values.

[U,S,V] = svd(X) producesa diagonal matrix S of the same dimension as X,with nonnegative diagonal elements in decreasing order, and unitarymatrices U and V so that X= U*S*V'.

[U,S,V] = svd(X,0) producesthe "economy size" decomposition. If X ism-by-n with m > n, then svd computes onlythe first ncolumns of U and S isn-by-n.

[U,S,V] = svd(X,'econ') also produces the"economy size" decomposition. If X ism-by-n with m >= n, it is equivalent tosvd(X,0).For m < n, only the first m columns of V arecomputed and S is m-by-m.

Examples

For the matrix

X =     1    2     3    4     5    6     7    8

the statement

[U,S,V] = svd(X)

produces

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.0407S =     14.2691         0           0    0.6268           0         0           0         0V =    -0.6414     0.7672    -0.7672    -0.6414

The economy size decomposition generated by

[U,S,V] = svd(X,0)

produces

U =    -0.1525   -0.8226    -0.3499   -0.4214    -0.5474   -0.0201    -0.7448    0.3812S =    14.2691         0          0    0.6268V =    -0.6414    0.7672    -0.7672   -0.6414

Diagnostics

If the limit of 75 QR step iterations is exhausted while seekinga singular value, this message appears:

Solution will not converge.

2、使用误区

>> S=svd(A)
??? Undefined function or method 'svd' for input arguments of type 'uint8'.
出错原因,A的数据类型为uint8
解决办法S=svd(double(A))


>> S=SVD(double(A))
??? Undefined function or method 'SVD' for input arguments of type 'double'.
出错原因,SVD在R2011a中不能被调用,区分大小写
解决办法S=svd(double(A))