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.