如何迭代Eigen中稀疏矩阵的行和列?

时间:2015-02-05 10:58:43

标签: c++ matlab sparse-matrix eigen eigen3

如何迭代Eigen中稀疏矩阵的行和列?

我有一行主稀疏矩阵,我想在其上执行这些matlab命令:

  

R =总和(H,1)

     

R2 =总和(H,2)

其中H是稀疏矩阵(0,1),r和r2是整数向量。我认为我必须能够在row和col上进行迭代才能完成。任何建议将不胜感激。

提前感谢。

1 个答案:

答案 0 :(得分:1)

您可能希望查看非常有用的eigen / matlab转化参考: http://eigen.tuxfamily.org/dox/AsciiQuickReference.txt

在您的情况下,它转换为:

r  = H.colwise().sum() // sum(H, 1)
r2 = H.rowwise().sum() // sum(H, 2)

修改

正如您所指出的,稀疏矩阵不支持这些功能。您可能需要重新实现它。我建议从https://forum.kde.org/viewtopic.php?f=74&t=122971

获得分离

sum(H, 1)的示例中,它可以写成:

r = H * VectorXd::Ones(H.cols())