如何将两个Eigen :: DiagonalMatrix相乘并将结果添加到Eigen :: SparseMatrix?

时间:2017-12-04 13:19:26

标签: c++ sparse-matrix eigen diagonal

我试图为线性系统编写求解器,并且来自Matlab / NumPy等,我发现Eigen的类型有点受限。

我目前的问题解决了这个问题:

D * DD + S

其中DDD的类型为Eigen::DiagonalMatrix<double, Eigen::Dynamic, Eigen::Dynamic>S为Eigen :: SparseMatrix`。

有(高效)方法吗?这看起来很基本所以我必须遗漏一些东西。我愿意放弃DDD DiagonalMatrix而他们只是SparseMatrix,只要上面的表达太复杂了。

1 个答案:

答案 0 :(得分:1)

假设稀疏矩阵S沿对角线已经有非零系数,你可以这样做:

S.diagonal() += D.cwiseProduct(DD);