对本征对称稀疏矩阵进行迭代

时间:2018-06-25 04:38:42

标签: c++ sparse-matrix eigen

我正在按照以下示例遍历稀疏矩阵的元素。

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 :(得分:1)

您可以在每个循环的开始进行检查:

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