MATLAB Functions Help Desk

colperm

Purpose

Sparse column permutation based on nonzero count

Syntax

Description

j = colperm(S) generates a permutation vector j such that the columns of S(:,j) are ordered according to increasing count of nonzero entries. This is sometimes useful as a preordering for LU factorization; in this case use lu(S(:,j)).

If S is symmetric, then j = colperm(S) generates a permutation j so that both the rows and columns of S(j,j) are ordered according to increasing count of nonzero entries. If S is positive definite, this is sometimes useful as a preordering for Cholesky factorization; in this case use chol(S(j,j)).

Algorithm

The algorithm involves a sort on the counts of nonzeros in each column.

Examples

The n-by-n arrowhead matrix

has a full first row and column. Its LU factorization, lu(A), is almost completely full. The statement

returns j = [2:n 1]. So A(j,j) sends the full row and column to the bottom and the rear, and lu(A(j,j)) has the same nonzero structure as A itself.

On the other hand, the Bucky ball example, B = bucky,

has exactly three nonzero elements in each row and column, so j = colperm(B) is the identity permutation and is no help at all for reducing fill-in with subsequent factorizations.

See Also

chol        Cholesky factorization

colmmd      Sparse minimum degree ordering

lu          LU matrix factorization

symrcm      Sparse reverse Cuthill-McKee ordering



[ Previous | Help Desk | Next ]