一行充满零的稀疏矩阵的CSR格式

时间:2018-10-06 20:22:27

标签: c++ matrix sparse-matrix intel-mkl

以下3x3稀疏矩阵可以使用CSR格式存储在英特尔MKL库中吗?

A = [ 0 0 1
      0 0 0
      3 1 4];

valuesA   = {1, 3, 1, 4};
columnsA  = {2, 0, 1, 2};
rowIndexA = {0, 1,      3};

如何将其与下面的2x3矩阵区分开?

B = [ 0 0 1
      3 1 4];

valuesB   = {1, 3, 1, 4};
columnsB  = {2, 0, 1, 2};
rowIndexB = {0, 1,      3};

原因是,我有一个全为零的行是矩阵索引。该全零行可以发生在矩阵A中的任何位置。矩阵A实际上是一个较大的稀疏矩阵的子矩阵,将在方程Ax = b的系统中使用。有人可以给我一些见识吗?

1 个答案:

答案 0 :(得分:1)

如果该行为空,则只需重复rowIndexA中的相应值。

对于矩阵

0 0 1
0 0 0
3 1 4

正确的表示是:

valuesA = {1, 3, 1, 4};
columnsA = {2, 0, 1, 2};
rowIndexA = {0, 1, 1, 4};
           //   ^^^^ repeat 1

rowIndexA中的最后一个值应等于元素数,即您的情况下为4。然后,您将在每行中获得正确数量的元素:第一行1 - 0 = 1,第二行1 - 1 = 0和最后一行4 - 1 = 3