如何在Eigen中对稀疏矩阵的行和列进行迭代

How can I iterate on both rows and cols of a sparse matrix in Eigen?

本文关键字:迭代 Eigen      更新时间:2023-10-16

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

我有一个主要的行稀疏矩阵,我想对它执行以下matlab命令:

r=总和(H,1)

r2=总和(H,2)

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

提前谢谢。

您可能需要了解非常有用的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())