html/Pajek/GD98_a San Jose State University Singular Matrix Database

maintained by Leslie Foster
Mathematics Department
San Jose State University
email: foster "at" math.sjsu.edu

This database (click here to browse) is a collection of numerically singular matrices that arise in real applications or that have characteristic features of problems from practice. For matrices in this collection:

The matrices in this database currently come from the University of Florida Sparse Matrix Collection and Regularization Tools . We welcome contribution of additional matrices.

Goals of the database are to make available a set of matrices for testing algorithms designed for singular matrices and to collect software links, references and other information related to numerically singular matrices. The database and web pages may also facilitate understanding of how theoretical concepts such as rank, nullity and singularity should be interpreted for matrices that arise in applications.

When matrices are downloaded in MATLAB format (three formats are available: MATLAB mat-file, Rutherford-Boeing, or Matrix Market) all or, for large matrices, some of the singular values have been precomputed and are available. These singular values permit picturing the full or partial singular value spectrum, which can help to understand the numerical rank of a matrix (see the sample gallery and discussion below) and can facilitate computations that require matrix singular values. For larger matrices -- up to 682,712 by 682,712 -- a routine spnrank (see spnrank.pdf) was created to calculate the numerical rank and a partial singular value spectrum.

These web pages and the SJsingular package are derivative work. They are based on the University of Florida Sparse Matrix Collection and the UFcollection toolbox from the SuiteSparse package by Timothy Davis. The University of Florida database and this database target different types of matrices. However the format, organization and presentation of our web pages are close to the format, organization and presentation of the web pages at University of Florida Sparse Matrix Collection. We greatly appreciate Tim Davis's permission to adapt his work. Key initial modifications to UFcollection were done by Nikolay Botev at San Jose State University.

This collection is managed by Leslie Foster, but "editors" of other collections are attributed, via the Problem.ed field in each problem set. Problem.author is the matrix creator.

Browse the collection:

For matrices in the above lists the numerical rank and a full or, for larger matrices, partial singular value spectrum has been calculated. The list indicated by "additional singular matrices", below, provides links to the University of Florida Sparse Matrix web site for matrices that are numerical singular, in our sense, but for which the numerical rank has not yet been calculated.

Sample Gallery of Singular Value Spectrums (one matrix per group):

The singular values spectrum is very helpful in understanding the numerical rank of a matrix (see this link for more discussion). Therefore with the matrices in the database we include a plot of the singular value spectrum or, for larger matrices, a partial singular value spectrum. Below we list such a plot for one matrix in each group. In the plots the vertical axis is logarithmic to permit the display of a range of singular values. The horizontal line is at max(m,n)*eps(norm(A)) and provides a sense of the vertical scale.
   

Downloading matrices:

Right-click the matrices (in MAT, MM, or RB format) in your browser and "save as..." a file on your system. Downloads using MM or RB format will need to be uncompressed. If you are using Matlab 7.0 or higher Matlab format is convenient. Also if you are using Matlab the SJget function allows access to the matrices from inside Matlab:

MATLAB interface:

  • Click here for the SJget MATLAB interface for access to the collection from inside your MATLAB workspace. From inside MATLAB, SJget will download a matrix, cache it locally, and load it into your MATLAB workspace. You don't need to use a browser to get a matrix. For example to download the 10th matrix from the SJSU Singular site, from inside Matlab:
    	Prob = SJget(10);      % Prob is a struct (matrix, name, meta-data, ...)
    	A = Prob.A ;           % A is a numerically singular matrix
    	svals = Prob.svals;    % the singular values of A
    	SJplot(Prob),shg       % plot the singular value spectrum of A
    	disp( SJrank(Prob) )   % display the numerical rank of the matrix
    
    You can also search for matrices that fit your criteria and reorder the matrices -- from inside MATLAB. For example, to download all symmetric matrices into MATLAB, and order them in increasing numerical rank:
        index = SJget ;           % get index of the SJSU Singular Matrix Collection
        ids = find (index.numerical_symmetry == 1) ;
        [ignore, i] = sort (index.numrank (ids)) ;
        ids = ids (i) ;
        for id = ids
    	   Prob = SJget (id);        % Prob is a struct (matrix, name, meta-data, ...)
    	   A = Prob.A ;              % A is a symmetric matrix
    	   disp([SJrank(Prob),size(A)])   % list the numerical rank and size of A
        end
    
    For an alternate method of downloading matrices try webget.

    Software:

    The SJsingular package includes all the software used to generate these web pages, and to manage the matrices themselves. Most users will not need the SJsingular package. The SJget interface is available independently from the SJsingular package.

    To submit matrices to this collection:

    References:

    Software links, sources of some matrices and other links