MATLAB Function Reference    

Column approximate minimum degree permutation



p = colamd(S) returns the column approximate minimum degree permutation vector for the sparse matrix S. For a non-symmetric matrix S, S(:,p) tends to have sparser LU factors than S. The Cholesky factorization of S(:,p)' * S(:,p) also tends to be sparser than that of S'*S.

knobs is a two-element vector. If S is m-by-n, then rows with more than (knobs(1))*n entries are ignored. Columns with more than (knobs(2))*m entries are removed prior to ordering, and ordered last in the output permutation p. If the knobs parameter is not present, then knobs(1) = knobs(2) = spparms('wh_frac').

stats is an optional vector that provides data about the ordering and the validity of the matrix S.

Number of dense or empty rows ignored by colamd
Number of dense or empty columns ignored by colamd
Number of garbage collections performed on the internal data structure used by colamd (roughly of size 2.2*nnz(S) + 4*m + 7*n integers)
0 if the matrix is valid, or 1 if invalid
Rightmost column index that is unsorted or contains duplicate entries, or 0 if no such column exists
Last seen duplicate or out-of-order row index in the column index given by stats(5), or 0 if no such row index exists
Number of duplicate and out-of-order row indices

Although, MATLAB built-in functions generate valid sparse matrices, a user may construct an invalid sparse matrix using the MATLAB C or Fortran APIs and pass it to colamd. For this reason, colamd verifies that S is valid:

The ordering is followed by a column elimination tree post-ordering.

See Also

colmmd, colperm, spparms, symamd, symmmd, symrcm


[1]  The authors of the code for colamd are Stefan I. Larimore and Timothy A. Davis (, University of Florida. The algorithm was developed in collaboration with John Gilbert, Xerox PARC, and Esmond Ng, Oak Ridge National Laboratory. Sparse Matrix Algorithms Research at the University of Florida:

  cmopts colmmd