Итерации по симметричной разреженной матрице в собственных - PullRequest
0 голосов
/ 25 июня 2018

Я следую следующему примеру, чтобы пройтись по элементам разреженной матрицы.

SparseMatrix<double> mat(rows,cols);
for (int k=0; k<mat.outerSize(); ++k)
  for (SparseMatrix<double>::InnerIterator it(mat,k); it; ++it)
  {
    it.value();
    it.row();   // row index
    it.col();   // col index (here it is equal to k)
    it.index(); // inner index, here it is equal to it.row()
  }

Я полностью согласен с этим примером. Тем не менее, матрица, которую я имею, является симметричной, и я хочу выполнять итерацию только в нижней части. Есть ли простой способ перебора симметричной матрицы?

1 Ответ

0 голосов
/ 25 июня 2018

Вы можете проверить это в начале каждого цикла:

for (int k=0; k<mat.outerSize(); ++k)
  for (SparseMatrix<double>::InnerIterator it(mat,k); it; ++it)
  {
      if(it.row() < it.col())
          continue;
  }
...