是否有一种将压缩行存储(CRS)格式的稀疏矩阵转换为坐标列表(COO)格式的有效方法?
答案 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)等等。您在行数组中存储了大量冗余数据;你可以改为只有一个数组ia
,ia(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格式。