Scilab Home page | Wiki | Bug tracker | Forge | Mailing list archives | ATOMS | File exchange
Change language to: English - Français - Português - 日本語 -

See the recommended documentation of this function

# svd

singular value decomposition

### Calling Sequence

s=svd(X)
[U,S,V]=svd(X)
[U,S,V]=svd(X,0) (obsolete)
[U,S,V]=svd(X,"e")
[U,S,V,rk]=svd(X [,tol])

### Arguments

X

a real or complex matrix

s

real vector (singular values)

S

real diagonal matrix (singular values)

U,V

orthogonal or unitary square matrices (singular vectors).

tol

real number

### Description

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

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

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

[U,S,V,rk]=svd(X,tol) gives in addition rk, the numerical rank of X i.e. the number of singular values larger than tol.

The default value of tol is the same as in rank.

### Examples

X=rand(4,2)*rand(2,4)
svd(X)
sqrt(spec(X*X'))

• rank — rank
• qr — QR decomposition
• colcomp — column compression, kernel, nullspace
• rowcomp — row compression, range
• sva — singular value approximation
• spec — eigenvalues of matrices and pencils

### Used Functions

svd decompositions are based on the Lapack routines DGESVD for real matrices and ZGESVD for the complex case.