CSR формат для разреженных матриц, имеющих одну строку, полную нулей - PullRequest
0 голосов
/ 06 октября 2018

Можно ли сохранить следующую 3x3 разреженную матрицу в формате CSR в библиотеке Intel 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 голосов
/ 07 октября 2018

Если строка пуста, просто повторите соответствующее значение в 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 в последнем.

...