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.
A— Input matrix
Input matrix, specified as a sparse matrix.
Complex Number Support: Yes
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
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.
backgroundPoolor accelerate code with Parallel Computing Toolbox™
This function fully supports thread-based environments. For more information, see Run MATLAB Functions in Thread-Based Environment.