Ich versuche, eine Matrix zu initialisieren (mit der Eigen-Bibliothek), um einen Wert ungleich Null zu haben, wenn ich es erstelle. Gibt es einen schönen Weg, dies ohne eine For-Schleife zu tun?Wie soll ich den Inhalt einer großen Matrix in Eigen initialisieren?
Zum Beispiel, wenn ich die ganze Matrix bis 1,0, initialisieren wollte ich mag so etwas wie:
Eigen::MatrixXd mat(i,j) = 1.0;
oder
Eigen::MatrixXd mat(i,j);
mat += 1.0;
(Ich bin es gewohnt, diese Art von Etwas in MATLAB, und es würde Eigen noch netter machen, als es bereits ist. Ich vermute, dass es irgendwo eine eingebaute Methode gibt, die das nicht gefunden hat.)
A sub-que lierte auf diese Frage wäre, wie ein Block von Matrixelementen auf einen Sollwert zu setzen, etwas ilke:
mat.block(i,j,k,l) = 1.0;
Ich fand eine Antwort, aber es wäre immer noch schön, eine Syntax wie ich vorgeschlagen zu haben ... :) – andyras
Nahe an was Sie wollen: Multiplizieren Sie den Skalar mit 'Eigen :: MatrixXd :: Ones (Zeilen, Spalten) ', wie:' Eigen :: MatrixXd mat (3,3) = 1,5 * Eigen :: MatrixXd :: Ones (3,3) 'Es ist nicht ganz wie MATLAB, aber nahe – vsoftco
Die Syntax, die Sie versucht haben, funktioniert mit' Eigen :: Array, aber nicht mit linearen Algebra-Matrizen, weil in diesem Fall ein skalarer Wert eher assimiliert werden sollte, da die Identitätsmatrix diesen skalaren Wert multipliziert. – ggael