Welche Bibliothek verwenden Sie für N-dimensionale Arrays?
Ich benutze Blitz ++ bei der Arbeit und ich mag wirklich keinen Aspekt davon. Einige Aspekte sind sogar gefährlich. Die Notwendigkeit, die Größe vorher zu ändern mit operator =. A (Range :: all (), Range :: all ()) wirft für eine (0,0) Matrix usw. und die linearen Algebra-Operationen sollen sein über clapack erledigt.
Ich habe eigen gebraucht und geliebt. Ich schätze seine "all-in-header" Implementierungen, der C ++ - syntaktische Zucker und das Vorhandensein aller linearen Algebra-Operationen Ich brauche (Matrixmultiplikation, Systemauflösung, Cholesky ...)
Was benutzen Sie?
boost :: array und auch boost::MultiArray . Es gibt auch ein ziemlich gutes lineares Algebra-Paket namens uBLAS
Es gibt auch Gürteltier , das ich in einigen Projekten verwende. Von ihrer Website:
Armadillo ist eine C ++ lineare Algebra-Bibliothek (Matrix Maths) mit dem Ziel ein gutes Gleichgewicht zwischen Geschwindigkeit und Leichtigkeit von Nutzen. Ganzzahl, Fließkommazahl und komplexe Zahlen werden ebenfalls unterstützt als eine Untermenge von trigonometrischen und Statistikfunktionen. Verschiedene Matrix Zerlegungen werden durch bereitgestellt optionale Integration mit LAPACK und ATLAS-Bibliotheken.
Es wird ein verzögerter Bewertungsansatz (während der Kompilierzeit) verwendet kombinieren Sie mehrere Vorgänge zu einem und reduzieren (oder beseitigen) die Notwendigkeit für Provisorien. Das ist erreicht durch rekursive Vorlagen und Vorlage Meta-Programmierung.
Diese Bibliothek ist nützlich, wenn C ++ als die Sprache der Wahl entschieden wurde (aufgrund von Geschwindigkeit und / oder Integration Fähigkeiten), anstatt einer anderen Sprache wie Matlab ® oder Octave. Es wird unter einer Lizenz vertrieben, die ist nützlich in beiden Open-Source-und kommerzielle Kontexte.
Armadillo wird in erster Linie bei NICTA (Australien) mit entwickelt Beiträge aus der ganzen Welt.
Wir haben TNT seit einigen Jahren erfolgreich eingesetzt. Es gibt jedoch genügend Probleme, dass wir uns stattdessen auf eine intern entwickelte Lösung zubewegen. Die zwei größten Probleme für uns sind, dass
Wenn das kein Problem ist, dann sind sie ziemlich praktisch für viele häufige Array-Aufgaben.