Ich versuche Armadillo für C++ zu verwenden. Ich bin mit dem Ort als Referenz: Armadillo LinkWie erstellt man eine nxn Unity Matrix in Armadillo?
Die einfache und langsame Art, wie ich es an die Arbeit bekam, war:
arma::mat UnityMatrix = arma:mat(5,5,fill::zeros)
for (int ii = 0; ii < UnityMatrix.n_rows;ii++){
for (int jj = 0; jj < UnityMatrix.n_cols;jj++){
if (ii==jj){
UnityMatrix(ii,jj)=1;
}
}
} ich eine Matrix von Nullen zu erstellen, und fügen Sie Einsen auf der Diagonalen. Das funktioniert, aber ich bin mir sicher, dass es in Armadillo einen viel effizienteren Weg gibt.
Armadillo hat den Umat-Typ, der Einheit sein sollte, aber ich kann nicht herausfinden, wie man es benutzt.
Ich habe versucht:
arma::umat InitM;
InitM.set_size(5,5);
Was mich eine 5x5-Matrix von Zufallswerten gab.
Wenn ich andere Möglichkeiten der Initialisierung versucht, aber keiner würde kompilieren.
Dies scheint so einfach, dass ich keine Online-Beispiele finden kann, aber immer noch nicht herausfinden kann.
Ich fand die Antwort gleich nach dem Posten. Aber das bringt eine andere Frage. Was ist der Umat-Typ, den ich verwenden wollte und wann würde ich ihn verwenden? – MichaelE
Um es klar zu sagen, es gibt keine "Einheitsmatrix". Es gibt die [Identitätsmatrix] (https://en.wikipedia.org/wiki/Identity_matrix), die manchmal als eine Einheitsmatrix bekannt ist. Dies ist nicht zu verwechseln mit einer [unitären Matrix] (https://en.wikipedia.org/wiki/Unitary_matrix), die sich von der Identitätsmatrix unterscheidet. – mtall