主要内容

colperm

R2026b

基于非零项计数的稀疏列置换

语法

j = colperm(S)

描述

j = colperm(S) 生成置换向量 j,根据非零项数升序对 S(:,j) 的列进行排序。这有时可用于对 LU 分解进行预先排序;在这种情况下,请使用 lu(S(:,j))。

如果 S 是对称矩阵,则 j = colperm(S) 生成置换矩阵 j,根据非零项数升序对 S(j,j) 的行和列两者都进行排序。如果 S 是正定矩阵,则这有时可用于对乔列斯基分解进行预先排序;在这种情况下,请使用 chol(S(j,j))。

示例

100×100 箭尖矩阵

n = 100;
A = [ones(1,n); ones(n-1,1) speye(n-1,n-1)]

包含全满的第一行和第一列。其 LU 分解 lu(A) 也几乎是全满的。语句

j = colperm(A)

返回 j = [2:n 1]。因此 A(j,j) 将该全满的行和列移到底部和后部,且 lu(A(j,j)) 具有与 A 自身相同的非零结构体。

另一方面,布基球示例

B = bucky

在每行和每列中恰好有三个非零元素,这样 j = colperm(B) 是单位置换,对于降低后续分解的填充元没有任何作用。

算法

算法涉及对每列中的非零项数进行排序。

扩展功能

全部展开

C/C++ 代码生成
使用 MATLAB® Coder™ 生成 C 代码和 C++ 代码。 (自 R2026a 起)

GPU 代码生成
使用 GPU Coder™ 为 NVIDIA® GPU 生成 CUDA® 代码。 (自 R2026a 起)

GPU 数组
通过使用 Parallel Computing Toolbox™ 在图形处理单元 (GPU) 上运行来加快代码执行。

版本历史记录

在 R2006a 之前推出

全部展开

另请参阅

| | | | | |