dispiace per rilanciare una vecchia questione, ma attualmente sto lavorando su una fonte di C aperta ++ libreria che risponde esattamente a questa domanda:
KeyCpp è una fonte C aperta ++ libreria che fornisce la sintassi MATLAB/Octave simile a diversi numerica utile metodi e anche alcune funzionalità di tracciamento. Attualmente ci sono funzioni per eig
, ode45
, fft
, linsolve
, svd
, interp1
, plot
e molte altre funzioni comuni di MATLAB.
Mentre ci sono altre (molto buone) librerie che forniscono molte di queste funzioni (come Armadillo, Eigen, ecc.), La maggior parte non sono librerie numeriche complete e la maggior parte della loro sintassi è diversa dalla sintassi di MATLAB. Anche se KeyCpp non è ancora una libreria numerica completa (ma sta migliorando sempre!), La sintassi è simile a quella di MATLAB come consente il linguaggio C++.
In KeyCpp, per tracciare i vettori t
e y
usiamo la seguente sintassi: (Vai here per un più ampio esempio)
#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 funzionalità della biblioteca KeyCpp sfrutta LAPACK, Gnuplot e odeint (da Boost). I seguenti progetti open source sono stati incorporati in questa libreria: Kiss FFT, Gnuplot-cpp.
documentazione Doxygen per la maggior parte delle funzioni si trova here
+1 per matrice boost. Avete pacchetti di interpolazione che possono eseguire funzioni simili a griddata? – Jacob
http://www.scimath.com/ ha alcune funzionalità piuttosto buone, non specificamente griddata, ma con l'interpolazione 3-d è possibile implementare la funzionalità di griddata abbastanza facilmente. – DeusAduro