SVD_DEMO
Demonstration of the Singular Value Decomposition


SVD_DEMO is a MATLAB program which demonstrates the computation of the singular value decomposition and a few of its properties.

The singular value decomposition has uses in solving overdetermined or underdetermined linear systems, linear least squares problems, data compression, the pseudoinverse matrix, reduced order modeling, and the accurate computation of matrix rank and null space.

The singular value decomposition of an M by N rectangular matrix A has the form

        A(mxn) = U(mxm) * S(mxn) * V'(nxn)
      
where Note that the transpose of V is used in the decomposition, and that the diagonal matrix S is typically stored as a vector.

Usage:

svd_demo ( m, n, [seed] )
where

Licensing:

The computer code and data files described and made available on this web page are distributed under the GNU LGPL license.

Languages:

SVD_DEMO is available in a C version and a C++ version and a FORTRAN77 version and a FORTRAN90 version and a MATLAB version.

Related Data and Programs:

FINGERPRINTS, a dataset directory which contains a few images of fingerprints.

LAPACK_EXAMPLES, a FORTRAN90 program which demonstrates the use of the LAPACK linear algebra library.

LINPACK, a MATLAB library which includes routines to carry out the singular value decomposition.

SVD_BASIS, a MATLAB program which computes a reduced basis for a collection of data vectors using the SVD.

SVD_FINGERPRINT, a MATLAB program which reads a file containing a fingerprint image and uses the Singular Value Decomposition (SVD) to compute and display a series of low rank approximations to the image.

SVD_SNOWFALL, a MATLAB program which reads a file containing historical snowfall data and analyzes the data with the Singular Value Decomposition (SVD).

SVD_TRUNCATED, a MATLAB program which demonstrates the computation of the reduced or truncated Singular Value Decomposition (SVD) that is useful for cases when one dimension of the matrix is much smaller than the other.

TOMS358, a FORTRAN77 library which computes the singular value decomposition for a complex matrix.

Reference:

  1. Edward Anderson, Zhaojun Bai, Christian Bischof, Susan Blackford, James Demmel, Jack Dongarra, Jeremy Du Croz, Anne Greenbaum, Sven Hammarling, Alan McKenney, Danny Sorensen,
    LAPACK User's Guide,
    Third Edition,
    SIAM, 1999,
    ISBN: 0898714478,
    LC: QA76.73.F25L36
  2. Jack Dongarra, Jim Bunch, Cleve Moler, Pete Stewart,
    LINPACK User's Guide,
    SIAM, 1979,
    ISBN13: 978-0-898711-72-1,
    LC: QA214.L56.
  3. Gene Golub, Charles VanLoan,
    Matrix Computations, Third Edition,
    Johns Hopkins, 1996,
    ISBN: 0-8018-4513-X,
    LC: QA188.G65.
  4. David Kahaner, Cleve Moler, Steven Nash,
    Numerical Methods and Software,
    Prentice Hall, 1989,
    ISBN: 0-13-627258-4,
    LC: TA345.K34.
  5. Lloyd Trefethen, David Bau,
    Numerical Linear Algebra,
    SIAM, 1997,
    ISBN: 0-89871-361-7,
    LC: QA184.T74.

Source Code:

CIRCLE_FORWARD is a simple program that examines what happens when a 2x2 matrix A multiplies vectors on the unit circle.

SVD_DEMO is a program which demonstrates some features of the singular value decomposition:

Examples and Tests:

You can go up one level to the MATLAB source codes.


Last revised on 06 August 2009.