Scilab Website | Contribute with GitLab | Mailing list archives | ATOMS toolboxes
Scilab Online Help
2025.0.0 - English


svd

singular value decomposition

Syntax

s=svd(X)
[U,S,V]=svd(X)
[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,"e") 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'))

See also

  • rank — rank
  • qr — QR decomposition
  • colcomp — column compression, kernel, nullspace
  • rowcomp — row compression, range
  • sva — singular value approximation
  • spec — eigenvalues, and eigenvectors of a matrix or a pencil

Used Functions

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

History

VersionDescription
2023.0.0

svd(X, 0) is obsolete, use svd(X, "e") instead.

2024.0.0

svd(X, 0) is no more supported, use svd(X, "e") instead.

Report an issue
<< sva Eigenvalue and Singular Value Factorization >>

Copyright (c) 2022-2024 (Dassault Systèmes)
Copyright (c) 2017-2022 (ESI Group)
Copyright (c) 2011-2017 (Scilab Enterprises)
Copyright (c) 1989-2012 (INRIA)
Copyright (c) 1989-2007 (ENPC)
with contributors
Last updated:
Thu Oct 24 11:13:08 CEST 2024