MATLAB Function Reference |
Sparse column permutation based on nonzero count
Syntax
j = colperm(S)
Description
j = colperm(S)
產生排列向量(permutation vector) j
使得 S(:,j)
的直行(columns)根據非零元素的數量做遞增排列。這個函式可用在做LU factorization前,預先排列矩陣。指令可寫成 lu(S(:,j))
。
若 S
是對稱矩陣, j
=
colperm(S)
所得到的 j
可使得 S(j,j)
的行和列都根據非零元素的數量遞增排列。若 S
是正定矩陣(positive definite),這個函式可用在做 Cholesky factorization前,預先排列矩陣,指令可寫成 chol(S(j,j))
。
Algorithm
這個演算法根據每個列(column)中非零元素的數量,來做排列。
Examples
A = [ones(1,n); ones(n-1,1) speye(n-1,n-1)]
第一行和第一列都為非零的元素。其 LU factorization, lu(A)
幾乎都是非零的元素。下列指令:
j = colperm(A)
回傳 j
=
[2:n
1]
。所以 A(j,j)
的最下行和最右邊的列都為非零元素,lu(A(j,j))
和 A
本身有相同的非零結構。
另一方面, Bucky ball 的範例 B = bucky
,
每行每列都有剛好三個非零的元素,所以 j = colperm(B)
有相同的排列順序而無法減少元素的數量( 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 |