Je veux ajouter des éléments à la diagonale d'un objet Eigen :: MatrixXd avec la bibliothèque Eigen3 (version 3.3.2).Matrix et dans Eigen3
deux pour l'optimisation et être en mesure d'utiliser constness, je veux le faire en ajoutant une matrice diagonale par rapport à l'original, comme celui-ci
const MatrixXd a(2,2); a << 1, 2, 3, 4;
const VectorXd v(2); v << 10, 20;
const MatrixXd b = a + v.asDiagonal();
Mais cela ne fonctionne pas: je reçois une erreur de compilation au sujet il n'y a pas de operator+
. Ajoutant deux MatrixXd
fonctionne, donc je m'attendrais à ce qu'il se comporte pour la spécialisation en diagonale.
Retrait de la constness ne contribue pas. L'utilisation de matrices de tailles statiques ne fait aucune différence, ce n'est donc pas une dimension dynamique. Et construire explicitement un DiagonalMatrix
plutôt que d'utiliser le DiagonalWrapper
retourné par asDiagonal()
donne aussi la même erreur.
La multiplication est bien formée pour ces types: MatrixXd c = a * v.asDiagonal();
compile et s'exécute très bien. Est-ce que je fais quelque chose de mal, ou est operator+(Matrix,DiagonalMatrix)
manquant juste de la bibliothèque?
https://forum.kde.org/viewtopic.php?f=74&t=136617 – CoryKramer
Également relié: http://eigen.tuxfamily.org/bz/show_bug.cgi?id=610 – chtz