2017-12-04 16 views
0

선형 시스템을위한 솔버를 작성하려고하는데, Matlab/NumPy 등에서 나오면 Eigen의 유형이 조금 제한적이라는 것을 알게됩니다.어떻게 두 개의 Eigen :: DiagonalMatrix를 곱하고 결과를 Eigen :: SparseMatrix에 광고 할 수 있습니까?

나의 현재 문제는이 문제를 해결합니다

D * DD + S 
D

DD는 유형입니다 Eigen::DiagonalMatrix<double, Eigen::Dynamic, Eigen::Dynamic>S는 아이겐 :: SparseMatrix`입니다.

이렇게하려면 (효율적인) 방법이 있습니까? 그것은 다소 기본적인 것처럼 보이기 때문에 나는 뭔가를 놓치고 있어야합니다. 위의 표현이 너무 복잡하기 만하다면 DDDDiagonalMatrix이고 그 대신에 SparseMatrix 인 것을 기꺼이 포기할 것입니다. 대각선을 따라 S 이미이 비 - 제로 계수 당신은 스파 스 매트릭스를 가정

답변

0

을 수행 할 수 있습니다

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