MATLAB Function Reference |

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**

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,

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`

, `colamd`

, `colmmd`

, `lu`

, `spparms`

, `symamd`

, `symmmd`

, `symrcm`

ColorSpec | comet |