Main Content


Structural rank



r = sprank(A) calculates the structural rank of sparse matrix A.


collapse all

Calculate the structural rank of a 2-by-4 matrix.

A = [1 0 2 0
     2 0 4 0];
A = sparse(A);
rs = sprank(A)
rs = 2

Compare the structural rank to the regular rank calculation.

rf = rank(full(A))
rf = 1

For this matrix, the structural rank is 2 since two of the columns are nonzero. But the actual rank of the matrix is 1 since the columns are multiples of each other.

Input Arguments

collapse all

Input matrix, specified as a sparse matrix.

Data Types: double
Complex Number Support: Yes

More About

collapse all

Structural Rank

The structural rank of a matrix is the maximum rank of all matrices with the same nonzero pattern. A matrix has full structural rank if it can be permuted so that the diagonal has no zero entries.

The structural rank is an upper bound on the rank of a matrix, so it satisfies sprank(A) >= rank(full(A)).

Here are some definitions of the structural rank in terms of other functions:

  • The structural rank is a "maximum matching" and is related to the Dulmage-Mendelsohn decomposition by sprank(A) = sum(dmperm(A)>0).

  • Unlike dmperm, the matchpairs function also takes weights into account when it calculates matches. You can calculate a maximum matching by converting the matrix to 1s and 0s and maximizing the weight of the matches with matchpairs(double(A~=0),0,'max'). The structural rank is then equal to the number of matches.

Extended Capabilities

Version History

Introduced before R2006a

See Also