稀疏矩阵存储格式 - 转换

时间:2012-12-23 18:05:22

标签: matrix sparse-matrix

是否有一种将压缩行存储(CRS)格式的稀疏矩阵转换为坐标列表(COO)格式的有效方法?

1 个答案:

答案 0 :(得分:2)

看看Yousef Saad的库SPARSKIT - 他有子程序在压缩的稀疏行和坐标格式之间来回转换,以及其他几种稀疏矩阵存储方案。

无论如何,要了解如何从压缩格式中获取坐标格式,最简单的方法是考虑如何首先提出压缩行格式。假设您在首席运营官中有一个稀疏矩阵,您可以按顺序排列所有内容,例如

rows: 1  1  1  1  2  2  2  2  2  3  3  3 ...
cols: 1  3  5  9  2  3  7  9  11 1  2  3 ...

因此第1行中的非零条目是(1,1),(1,3),(1,5),(1,9)等等。您在行数组中存储了大量冗余数据;你可以改为只有一个数组iaia(i)告诉你行cols的数组i中的起始地址。在上面的例子中,我们将有

ia  : 1  5  10  ...
cols: 1  3  5  9  2  3  7  9  11 1  2  3 ...

从首席运营官到CSR,我们只使用

这一事实
ia(i+1) = ia(i) + number of non-zero entries in row i

任何我。知道这一点,您可以向后工作以从CSR获得COO格式。