Eigen3ライブラリ(バージョン3.3.2)を使ってEigen :: MatrixXdオブジェクトの対角線に要素を追加したいと思います。Eigen3のMatrixとDiagonalMatrixを追加する
両方の最適化とconst性を使用することができることのために、私はこの
const MatrixXd a(2,2); a << 1, 2, 3, 4;
const VectorXd v(2); v << 10, 20;
const MatrixXd b = a + v.asDiagonal();
のように、元の対角行列を追加することによって、これをしたいしかし、これは動作しません:私は約コンパイラエラーを取得しますoperator+
がありません。 2つを追加するとMatrixXd
が機能するため、斜めの特殊化のために動作することが期待されます。
constを削除することは役に立ちません。静的なサイズの行列を使用すると違いはありませんので、動的なサイズのものではありません。 asDiagonal()
によって返されたDiagonalWrapper
を使用するのではなく、DiagonalMatrix
を明示的に構築することも同じエラーが発生します。
倍数は、です。MatrixXd c = a * v.asDiagonal();
は正しくコンパイルされて実行されます。何か間違っているのですか、またはoperator+(Matrix,DiagonalMatrix)
がライブラリから欠落していますか?同等の質問尋ねたとKDE /固有のフォーラムに答えれることにリンクするための@CoryKramerへ
https://forum.kde.org/viewtopic.php?f=74&t=136617 – CoryKramer
関連:http://eigen.tuxfamily.org/bz/show_bug.cgi?id=610 – chtz