MATLAB Function Reference |
Column approximate minimum degree permutation
Syntax
p = colamd(S) p = colamd(S,knobs) [p,stats] = colamd(S) [p,stats] = colamd(S,knobs)
Description
p = colamd(S)
回傳稀疏矩陣(sparse matrix) S
的 column
approximate minimum degree permutation vector。對非對稱矩陣 S
來說, S(:,p)
應該會有比 S
更稀疏(sparser)的 LU 分解。 S(:,p)' * S(:,p)
的 Cholesky factorization
應該會比 S'*S
的Cholesky factorization 更為稀疏(sparser)。
knobs
是二個元素的向量。若 S 是 m
x n
的矩陣, 則會忽略超過 (knobs(1))*n
的橫列(row)。超過 (knobs(2))*m
的直行(column)會在排序時先被移除,最後再排在輸出結果 p
的後面。若未指定 knobs
參數,則 knobs(1)
= knobs(2) = spparms('wh_frac')
.
stats
是在使用 colamd
指令對矩陣 S
做運算時的相關性質。以選擇性引數向量(optional vector)來表示。
雖然 MATLAB 有內建函式來產生合法的稀疏矩陣,但使用者可能會使用 MATLAB C 或 Fortran
APIs 來產生不合法的稀疏矩陣,並拿來當做 colamd
的引數。因此 colamd
以下列方式來判斷 S
是否合法:
colamd
會忽略掉重覆的entry(duplicate entries)並繼續執行,且在 stats(4:7)
中顯示有關重覆的entry(duplicate entries)的訊息。colamd
會先複製矩陣 S
,再將此複製直行的橫列索引值加以排序(也就是說,不會修改原來的矩陣 S
),然後繼續執行,且在 stats(4:7)
中顯示有關未依順序排列的訊息。(sorts each column of its internal copy of the matrix S
(but does not repair the input matrix S
), continues processing, and provides information about the out-of-order entries in stats(4:7)
.)S
非上述二種情形且不合法, colamd
無法繼續執行下去。程式會顯示錯誤訊息,而不會回傳值給輸出引數(p
和 stats
)。 不懂 -> The ordering is followed by a column elimination tree post-ordering.
See Also
colmmd
, colperm
, spparms
, symamd
, symmmd
, symrcm
References
colamd
的指令原始碼為佛羅里達大學的Stefan I.
Larimore 和 Timothy A. Davis (davis@cise.ufl.edu
)所寫。這個演算法是 John
Gilbert, Xerox PARC, 和 Esmond Ng, Oak Ridge National
Laboratory共同合作產生的。佛羅里達大學的稀疏矩陣研究: http://www.cise.ufl.edu/research/sparse/
cmopts | colmmd |