2013-07-31 21 views
5

Ich verwende Gürteltier für symmetrische und dreieckige Matrizen. Ich wollte effizient in Bezug auf den Speicher arbeiten. Es scheint jedoch, dass es keinen anderen Weg gibt, als eine neue Matte zu erstellen und sie mit Nullen (für Dreiecksformen) oder mit Duplikaten (für Symmetrie) den unteren/oberen Teil der Matrix zu füllen.Armadillo C++: Gibt es eine spezielle Möglichkeit zum Erstellen effizient dreieckigen oder symmetrischen Matrix

Gibt es eine effizientere Möglichkeit, dreieckige/symmetrische Matrizen mit Armadillo zu verwenden?

Danke, Antoine

Antwort

3

Es gibt keine spezifische Unterstützung für dreieckige oder gebänderte Matrizen in Armadillo. Seit Version 3.4 wurde jedoch die Unterstützung für dünn besetzte Matrizen schrittweise hinzugefügt. Abhängig davon, was Armadillo Funktionen Sie brauchen, und die Sparsity Ihrer Matrix, können Sie profitieren von SpMat<type>, die compressed sparse column (CSC) format implementiert. Für jeden Nicht-Null-Wert in Ihrer Matrix speichert das CSC-Format den Zeilenindex zusammen mit dem Wert, so dass Sie wahrscheinlich nicht viel Speicher für eine Dreiecksmatrix speichern würden. Eine gebänderte diagonale Matrix sollte jedoch wesentlich weniger Speicher verbrauchen.