如何将两个 Eigen::DiagonalMatrix 相乘并将结果添加到 Eigen::SparseMatrix?
How can I multiply two Eigen::DiagonalMatrix and ad the result to an Eigen::SparseMatrix?
我正在尝试为线性系统编写求解器,来自 Matlab/NumPy 等,我发现 Eigen 的类型有点受限。
我当前的问题是围绕这个解决的:
D * DD + S
其中 D
和 DD
属于 Eigen::DiagonalMatrix<double, Eigen::Dynamic, Eigen::Dynamic>
类型,S
是 Eigen::SparseMatrix`。
有没有(有效的)方法来做到这一点?这看起来很基本,所以我一定遗漏了一些东西。我愿意放弃 D
和 DD
成为 DiagonalMatrix
而他们成为 SparseMatrix
,只要上面的表达式太复杂。
假设稀疏矩阵 S
沿对角线已经有非零系数,你可以这样做:
S.diagonal() += D.cwiseProduct(DD);
我正在尝试为线性系统编写求解器,来自 Matlab/NumPy 等,我发现 Eigen 的类型有点受限。
我当前的问题是围绕这个解决的:
D * DD + S
其中 D
和 DD
属于 Eigen::DiagonalMatrix<double, Eigen::Dynamic, Eigen::Dynamic>
类型,S
是 Eigen::SparseMatrix`。
有没有(有效的)方法来做到这一点?这看起来很基本,所以我一定遗漏了一些东西。我愿意放弃 D
和 DD
成为 DiagonalMatrix
而他们成为 SparseMatrix
,只要上面的表达式太复杂。
假设稀疏矩阵 S
沿对角线已经有非零系数,你可以这样做:
S.diagonal() += D.cwiseProduct(DD);