42 votes

Bibliothèque scientifique Options pour le C ou le C++

Je suis dans le processus de choix d'une bibliothèque scientifique pour l'utiliser comme base pour un projet. J'ai besoin de faire beaucoup de statistiques, algèbre linéaire et de traitement du signal tâches, et j'ai pensé il y a probablement certaines grandes bibliothèques qui ont déjà fait ce genre de choses mieux que je ne pourrais le programme moi-même.

Pour le c++, je sais à propos de Boost, mais n'ont pas beaucoup d'expérience de l'évaluer. J'ai aussi entendu parler de la Bibliothèque Scientifique GNU (GSL). Quelqu'un a une expérience avec ceux-ci ou d'une autre bibliothèque, et quelles sont vos opinions? Ceux qui sont généralement préféré? Toute info serait génial. Merci.

34voto

Dirk Eddelbuettel Points 134700

Quick:

  • Boost est grand, mais pas très "scientifique"
  • GNU GSL est très bon ... mais dans la plaine, C
  • Pour l'algèbre linéaire et de C++, j'aime vraiment Tatou
  • Pour le traitement du signal ++il est populaire
  • Pour quoi que ce soit de la statistique-je utiliser R avec le Rcpp et RInside paquets pour C++ interfaces

Pour moi, les distributions Linux questions. Avec Debian (et Ubuntu), j'obtiens un très grand nombre de choses compris que l'e.g Tatou (ou les plus vieux Newmat) pour l'algèbre linéaire, plus de cours de Lapack (et Atlas), plus des centaines d'autres bibliothèques. Les bibliothèques scientifiques sont particulièrement bien soutenu par des centaines de développeurs (et comme un avertissement, je suis l'un de ceux-ci).

15voto

Eamon Nerbonne Points 21663

Pour les opérations matricielles, Eigen est extrêmement faible charge de la bibliothèque C++ qui s'adapte aussi à des matrices de grandes tailles assez bien. Pour le calcul scientifique, vous pouvez avoir besoin pour traiter un beaucoup des matrices, ont donc un coup d'oeil à leur prise en main de l'échantillon - la documentation est excellente, BTW.

5voto

Caladain Points 3408

Algèbre linéaire pack est votre one-stop-shop pour tous les LA choses. Il est disponible dans une variété de langues et de saveurs.

Entre LAPACK et GSL, vous ne devriez pas avoir trop de fonctions pas déjà fait pour vous, pour trouver des solutions à des problèmes.

N'ai pas eu beaucoup SignalProcessing expérience, donc je ne peux pas en parler..

4voto

Warren P Points 23750

Avez-vous envisagé une open source mathématiques-programme comme Maxima, comme une base de départ pour votre application?

http://maxima.sourceforge.net/

Il semble particulièrement capable en ce qui concerne l'algèbre et à des équations à résoudre.

Deuxièmement, avez-vous considéré la valeur de quelque chose comme les combinaisons de Python+les bibliothèques python, avec le principal de votre application C++? Vous pouvez lier Python dans votre application et d'obtenir beaucoup de mathématique (numpy et scipy).

3voto

HostileFork Points 14697

J'ai travaillé sur un ordinateur de vision de projet utilisé VXL:

http://vxl.sourceforge.net/

Il peut avoir beaucoup de choses qui ne vous intéresse pas, mais il est divisé en paquets. L'une de celles-ci est une "objets numériques" de la bibliothèque (VNL):

http://public.kitware.com/vxl/doc/release/books/core/book_6.html#SEC44

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X