| 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 | ![]() |