Eine C ++ - Bibliothek für Arrays, Matrix, Vektor und klassische lineare Algebraoperationen [geschlossen]

8

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?

    
fulmicoton 07.12.2009, 14:44
quelle

3 Antworten

7

boost :: array und auch boost::MultiArray . Es gibt auch ein ziemlich gutes lineares Algebra-Paket namens uBLAS

    
Andreas Brinck 07.12.2009, 14:48
quelle
3

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.

    
Dirk Eddelbuettel 07.12.2009 15:00
quelle
2

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

  • Die Arrays sind nicht threadsicher, auch nicht für Lesezugriffe, da sie eine nicht threadsichere Referenzzählung verwenden.
  • Die Arrays verursachen alle möglichen Probleme, wenn Sie const-correct-Code schreiben.

Wenn das kein Problem ist, dann sind sie ziemlich praktisch für viele häufige Array-Aufgaben.

    
Adam Bowen 08.01.2010 15:58
quelle

Tags und Links