文档

colamd

柱近似最小度置换

语法

p = colamd (S)

描述

p = colamd (S)返回稀疏矩阵的列近似最小次排列向量年代.对于非对称矩阵年代S(:,p)倾向于有稀疏鲁因子年代.乔尔斯基分解s(:,p)'* s(:,p)也往往比的稀疏*年代年代

旋钮是一个两个元素的矢量。如果是——- - - - - -n,然后与超过(旋钮(1))* n条目将被忽略。大于(旋钮(2))* m条目在排序之前被删除,在输出排列中被排在最后p.如果旋钮参数不存在旋钮(1)旋钮(2)= spparms(“wh_frac”)

统计数据是一个可选的向量,提供关于排序和矩阵有效性的数据年代

统计数据(1)

忽略的密集或空行数colamd

统计数据(2)

忽略的密集或空列数colamd

统计(3)

所使用的内部数据结构上执行的垃圾收集的数量colamd(大致的大小2.2 * nnz(s)+ 4 * m + 7 * n整数)

(4)统计数据

0如果矩阵是有效的,或者1如果无效

(5)统计数据

右侧的列索引是未损成的或包含重复条目,或0如果不存在这样的列

统计数据(6)

的列索引中最后看到的重复或无序的行索引(5)统计数据,或0如果不存在这样的行索引

统计(7)

重复和无序的行索引数

尽管MATLAB®内置函数生成有效的稀疏矩阵,用户可以使用MATLAB C或Fortran api构造无效的稀疏矩阵并将其传递给colamd.为此原因,colamd验证年代是有效的:

  • 如果一个行索引在同一列中出现两次或两次以上,colamd中忽略重复条目,继续处理,并提供关于重复条目的信息统计数据(4:7)

  • 如果列中的行索引顺序错误,colamd对矩阵的内部副本的每一列进行排序年代(但没有修复输入矩阵年代)继续处理,并提供有关订阅无序条目的信息统计数据(4:7)

  • 如果年代是无效的,colamd不能继续下去。它打印一个错误消息,并且不返回输出参数(p或者统计数据)。

排序之后是列消除树的后排序。

例子

全部折叠

Harwell-Boeing稀疏矩阵集合和MATLAB®演示目录包括一个测试矩阵west0479.它是一个479阶矩阵,由一个8级化学精馏塔韦斯特伯格模型得出。间谍阴谋显示了这八个阶段的证据。的colamd点菜会打乱这个结构。

负载west0479一个= west0479;p = colamd(一个);图()子情节(1,2,1),间谍(A,4),标题(“一个”子情节(1,2,2),间谍(A(:,p),4),标题(“(:,p)”

将原矩阵LU分解后的间谍图与重新排序后的矩阵的间谍图进行比较,发现最小度降低了时间和存储需求,优于2.8倍。非零计数分别为15918和5920。

图()subplot(1,2,1), spy(lu(A),4), title(“陆(A)”)副情节(1,2,2),间谍(陆(A(:,p)),4),标题(“陆((:,p))”

参考

[1] colamd代码的作者是佛罗里达大学的Stefan I. Larimore和Timothy A. Davis (davis@cise.ufl.edu)。该算法是与约翰·吉尔伯特(John Gilbert)、施乐帕洛阿尔托研究中心(Xerox PARC)和橡树岭国家实验室(Oak Ridge National Laboratory)的埃斯蒙德·吴(Esmond Ng)合作开发的。佛罗里达大学稀疏矩阵算法研究:http://www.cise.ufl.edu/research/sparse/

另请参阅

|||

在R2006A之前介绍

这个主题有用吗?