svd_snowfall, a C++ code which demonstrates the use of the Singular Value Decomposition (SVD) to analyze a set of historical snowfall data, with plots created by gnuplot()

The snowfall data consists of records for the winters of 1890-1891 to 2016-2017, of the snowfall in inches, over the months from October to May, as measured at Michigan Tech.

This data can be regarded as an 8 by 127 matrix A. Applying the singular value decomposition produces the factors

A = U * S * V'
and it is the purpose of this library to consider what these factors indicate about the snowfall data.

The sample problem writes files that can be processed by GNUPLOT to create plots.


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


svd_snowfall is available in a C version and a C++ version and a FORTRAN90 version and a MATLAB version and a Python version.

Related Data and Programs:

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

gnuplot_test, C++ codes which illustrate how a program can write data and command files so that gnuplot can create plots of the program results.

SVD_BASIS, a C++ code which applies the Singular Value Decomposition (SVD) to a set of vectors, extracting dominant modes;


SVD_TRUNCATED, a C++ code 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.

TIME_SERIES, a dataset directory which contains examples of files describing time series.


  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. Gene Golub, Charles VanLoan,
    Matrix Computations, Third Edition,
    Johns Hopkins, 1996,
    ISBN: 0-8018-4513-X,
    LC: QA188.G65.
  3. David Kahaner, Cleve Moler, Steven Nash,
    Numerical Methods and Software,
    Prentice Hall, 1989,
    ISBN: 0-13-627258-4,
    LC: TA345.K34.
  4. Lloyd Trefethen, David Bau,
    Numerical Linear Algebra,
    SIAM, 1997,
    ISBN: 0-89871-361-7,
    LC: QA184.T74.

Source Code:

Last revised on 20 April 2020.