特征包迭代行主稀疏矩阵

时间:2014-03-15 08:02:30

标签: matrix eigen sparse-matrix eigen3

我试图遍历行主要稀疏矩阵的非零元素,如下所示:

Eigen::SparseMatrix<double,Eigen::RowMajor> Test(2, 3);
Test.insert(0, 1) = 34;
Test.insert(1, 2) = 56;
for (int k = 0; k < Test.outerSize(); ++k){
    for (Eigen::SparseMatrix<double>::InnerIterator it(Test, k); it; ++it){
        cout << it.row() <<"\t";
        cout << it.col() << "\t";
        cout << it.value() << endl;
    }
}

但我没有看到正确的价值观。相反,我看到it.row()的随机值,it.col()的值为1,it.value()的值为1,如下所示:

-17891602       1       -2.65698e+303

将RowMajor更改为ColumnMajor使代码按预期工作。

我不确定行主要部分出了什么问题?有谁可以让我知道我在这里失踪了什么?

提前致谢

1 个答案:

答案 0 :(得分:7)

我很惊讶它编译得很好:迭代器的类型不正确。它必须是SparseMatrix<double,Eigen::RowMajor>::InnerIterator