The reverse Cuthill-McKee ordering is intended to reduce the profile or bandwidth of the matrix.
The second output argument from sort is the permutation that sorts this vector. sort sorts the values in ascending order.full converts this vector to full storage format.The sum function sums down the columns of the matrix, producing a vector that contains the count of nonzeros in each column.The inner call to spones creates a sparse matrix with ones at the location of every nonzero element in S.
The colperm M-file has only a single line. The function p = colperm(S) computes this column-count permutation. This is sometimes a good reordering for matrices with very irregular structures, especially if there is great variation in the nonzero counts of rows or columns. The simplest such reordering is to sort the columns by nonzero count. Reordering the rows and columns can often make its Cholesky, factors sparser. Reordering the columns of a matrix can often make its LU or QR factors sparser. You can compute the inverse of p with r(p) = 1:n. To convert between the two representations, let I = speye(n) be an identity matrix of the appropriate size. The vector representation is slightly more compact and efficient, so the various sparse matrix permutation routines all return full row vectors with the exception of the pivoting permutation in LU (triangular) factorization, which returns a matrix compatible with earlier versions of MATLAB. If P is a sparse matrix, then both representations use storage proportional to n and you can apply either to S in time proportional to nnz(S). For example, the statements S(p,:) and P*S produce You can now try some permutations using the permutation vector p and the permutation matrix P. A permutation vector p, which is a full vector containing a permutation of 1:n, acts on the rows of S as S(p,:), or on the columns as S(:,p).A permutation matrix P acts on the rows of S as P*S or on the columns as S*P'.Sparse Matrices (Mathematics) MathematicsĪ permutation of the rows and columns of a sparse matrix S can be represented in two ways: