c++ - 迭代 Eigen 中的对称稀疏矩阵

标签 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()
  }

这个例子我完全没问题。但是,我拥有的矩阵是对称的,我只想遍历下半部分。有什么简单的方法可以遍历对称矩阵吗?

最佳答案

您可以在每个循环开始时检查它:

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

关于c++ - 迭代 Eigen 中的对称稀疏矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51016392/

相关文章:

c++ - 当我使用 expect 运算符时,我会使用 spirit X3 获得更快的解析器吗

c++ - 如何确保在所有静态对象初始化(等效于 DllMain)之后调用全局构造函数?

python - 在 PySpark 中存储大型 SparseMatrix 的最佳有效格式是什么

c++ - 如何从 opencv cv::Mat 或行优先数组初始化特征矩阵?

c++ - CPython 是字节码解释器吗?

c++从vector和stdout中的stdin存储读取

python - 使用 itertools.izip 优化迭代

python - 为什么 scipy csr 矩阵的行索引比 numpy 数组慢

c++ - Eigen c++ 将 double 转换为 long int?

c++ - C++ Eigen 库如何比专门的供应商库执行得更好?