svd

Purpose

Singular value decomposition.

Synopsis

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

Description

svd computes the matrix singular value decomposition.

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

s = svd(X) returns a vector containing the singular values.

[U,S,V] = svd(X,0) produces the economy size decomposition. If X is m-by-n with m > n, then svd computes only the first n columns of U and S is n-by-n.

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

Algorithm

svd uses the LINPACK routine ZSVDC.

Diagnostics

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

Solution will not converge.

References

[1] J.J. Dongarra, J.R. Bunch, C.B. Moler, and G.W. Stewart, LINPACK User's Guide, SIAM, Philadelphia, 1979.

(c) Copyright 1994 by The MathWorks, Inc.