如何在 Eigen 中对稀疏矩阵的行和列进行迭代?
我有一个行主要稀疏矩阵,我想在它上面执行这些 matlab 命令:
r=总和(H,1)
r2=总和(H,2)
其中 H 是稀疏矩阵(0,1), r 和 r2 是整数向量。我认为我必须能够在 row 和 col 上进行迭代才能做到这一点。任何建议将不胜感激。
提前致谢。
如何在 Eigen 中对稀疏矩阵的行和列进行迭代?
我有一个行主要稀疏矩阵,我想在它上面执行这些 matlab 命令:
r=总和(H,1)
r2=总和(H,2)
其中 H 是稀疏矩阵(0,1), r 和 r2 是整数向量。我认为我必须能够在 row 和 col 上进行迭代才能做到这一点。任何建议将不胜感激。
提前致谢。
您可能想看看非常有用的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())