SVD_TRUNCATED is a MATLAB program which demonstrates the computation of the reduced or truncated Singular Value Decomposition (SVD) of an M by N rectangular matrix, in cases where M < N or N < M.
The singular value decomposition of an M by N rectangular matrix A has the form
A(mxn) = U(mxm) * S(mxn) * V'(nxn)where
It is often the case that the matrix A has one dimension much bigger than the other. For instance, M = 3 and N = 10,000 might be such a case. For such examples, much of the computation and memory required for the standard SVD may not actually be needed. Instead, a truncated, or reduced version is appropriate. It will be computed faster, and require less memory to store the data.
If M < N, we have the "truncated V" SVD:
A(mxn) = U(mxm) * Sm(mxm) * Vm'(nxm)Notice that, for our example, we will have to compute and store a Vm of size 30,000 instead of a V of size 1,000,000 entries.
If N < M, we have the "truncated U" SVD:
A(mxn) = Un(mxn) * Sn(nxn) * V'(nxn)Similarly, in this case, the computation and storage of Un can be much reduced from that of U.
The MATLAB function
[ u, s, v ] = svd ( a )returns the standard SVD. However, by including the switch 'econ', you can request the truncated SVD:
[ u, s, v ] = svd ( a, 'econ' )This will automatically create the truncated V or truncated U decomposition, depending on whether M < N or N < M.
The computer code and data files described and made available on this web page are distributed under the GNU LGPL license.
SVD_TRUNCATED is available in a C++ version and a FORTRAN90 version and a MATLAB version.
FINGERPRINTS, a dataset directory which contains a few images of fingerprints.
SVD_BASIS, a MATLAB program which computes a reduced basis for a collection of data vectors using the SVD.
SVD_DEMO, a MATLAB program which demonstrates the singular value decomposition (SVD) for a simple example.
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).
You can go up one level to the MATLAB source codes.