我想用Eigen3庫(版本3.3.2)將元素添加到Eigen :: MatrixXd對象的對角線上。在Eigen3中添加矩陣和DiagonalMatrix
無論對於優化和能夠使用常量性,我希望通過增加對角矩陣原來的,這樣
const MatrixXd a(2,2); a << 1, 2, 3, 4;
const VectorXd v(2); v << 10, 20;
const MatrixXd b = a + v.asDiagonal();
這樣做,但這個不起作用:我得到一個編譯器錯誤沒有operator+
。添加兩個MatrixXd
確實有效,所以我希望它能夠表現爲對角線專業化。
刪除常量不起作用。使用靜態大小的矩陣沒有區別,所以它不是一個動態大小的事情。並且明確地構造DiagonalMatrix
而不是使用由asDiagonal()
返回的DiagonalWrapper
也給出相同的錯誤。
乘法是良好的這些類型:MatrixXd c = a * v.asDiagonal();
編譯和運行得很好。我做錯了什麼,或者只是從圖書館丟失了operator+(Matrix,DiagonalMatrix)
?
https://forum.kde.org/viewtopic.php?f=74&t=136617 – CoryKramer
也有關:http://eigen.tuxfamily.org/bz/show_bug.cgi?id=610 – chtz