fonctions MATLAB en C ++ [fermé]
-
19-09-2019 - |
Question
Quelqu'un sait-il une ressource où nous pouvons obtenir GRATUIT bibliothèques C ++ pour les fonctions MATLAB? Par exemple, les problèmes d'algèbre linéaire peuvent être résolus en utilisant LAPACK et BLAS.
En outre, Matlab dans un projet .NET est hors de question - je parle des implémentations C ++ directe des fonctions MATLAB® populaires (je ne sais pas quelles fonctions j'ai besoin en C ++ encore, mais les fonctions utilisées ne vont pas à être ésotériques).
Toutes les suggestions sur ces ressources?
La solution
Je ne l'ai jamais entendu parler d'un port complet de fonctionnalités de Matlab pour C ++. Cela étant dit, presque tout ce que Matlab n'existe dans une bibliothèque C ++ / C quelque part, un peu du haut de ma tête:
- LAPACK, BLAS, vous avez déjà mentionné ces derniers, et il y a quelques bonnes mises en œuvre, le plus notable (gratuit) étant un fftw
- Il y a des tas de bibliothèques d'images open source rapide là-bas, à savoir. interpolation, filtrage.
- Il y a de très bonnes bibliothèques de matrice POO là-bas,
Autres conseils
Désolé pour faire revivre une vieille question, mais je travaille actuellement sur une open source C ++ bibliothèque qui répond exactement à cette question:
KeyCpp est un C ++ open source bibliothèque qui fournit une syntaxe semblable à Octave MATLAB® / à plusieurs méthodes numériques utiles et aussi des fonctionnalités de traçage. Actuellement, il existe des fonctions pour eig
, ode45
, fft
, linsolve
, svd
, interp1
, plot
, et bien d'autres fonctions de Matlab commun.
Bien qu'il existe d'autres (très bien) les bibliothèques qui offrent un grand nombre de ces fonctions (telles que Armadillo, Eigen, etc.), la plupart ne sont pas complètes bibliothèques numériques et la plupart de leur syntaxe est différente de la syntaxe de Matlab. Alors que KeyCpp est pas encore une bibliothèque numérique complète (mais améliore tout le temps!), La syntaxe est aussi proche de Matlab est comme le langage C ++ permet.
Dans KeyCpp, pour tracer les vecteurs t
et y
nous utilisons la syntaxe suivante: (Go ici pour un exemple plus vaste)
#include <iostream>
#include <keycpp/keycpp.h>
using namespace keycpp;
int main(int argc, char** argv)
{
// Lets create some data: y = sin(t)
std::vector<double> t = linspace(-pi,pi,100);
std::vector<double> y = sin(t);
Figure h;
h.plot(t,y,"-b");
h.grid_on();
h.legend({"Series 1"});
h.title("Example Plot");
h.xlabel("time");
h.ylabel("y");
return 0;
}
La fonctionnalité de la bibliothèque KeyCpp tire parti de LAPACK, Gnuplot, et odeint (de poussée). Voici les projets open source ont été incorporés dans cette bibliothèque. FFT Kiss, Gnuplot-cpp
Lire la documentation Matlab très soigneusement et ont un coup de coude autour des DLL et d'autres composants, il installe sur vos disques durs. Je pense que vous constaterez que Matlab utilise une version de BLAS pour ce BLAS fait, peut-être aussi LAPACK et d'autres.