funzioni di MATLAB in C ++ [chiusa]
-
19-09-2019 - |
Domanda
Qualcuno sa una risorsa in cui possiamo ottenere Gratis C ++ librerie per funzioni di MATLAB? Ad esempio, problemi di algebra lineare possono essere risolti utilizzando LAPACK e BLAS.
Inoltre, MATLAB in un progetto .NET è fuori questione - sto parlando di C ++ diretto implementazioni di funzioni MATLAB popolari (non so che ho bisogno di funzioni in C ++ ancora, ma le funzioni utilizzate non stanno andando a essere esoterica).
Qualche suggerimento su tali risorse?
Soluzione
Non ho mai sentito di un porto completa di funzionalità di MATLAB per C ++. Detto questo, quasi tutto MATLAB fa esiste all'interno di un libreria C / C ++ da qualche parte, un po 'fuori dalla parte superiore della mia testa:
- LAPACK, BLAS, è già accennato questi, e ci sono alcune buone implementazioni, il più notevole (libero) uno è ATLAS .
- FFT è implementato in MATLAB tramite il fftw biblioteca
- Ci sono un sacco di librerie di immagini open-source veloci là fuori, vale a dire. interpolazione, filtraggio.
- Non ci sono davvero buone biblioteche matrice OOP là fuori, aumentare ha una bella.
Dopo di che, ben capire che cosa avete bisogno e c'è una buona probabilità che qualcuno ha implementato in C / C ++.
Altri suggerimenti
Ci scusiamo per far rivivere una vecchia questione, ma Attualmente sto lavorando su una sorgente C ++ aperta libreria che risponde esattamente a questa domanda:
KeyCpp è una fonte C ++ aperta libreria che fornisce la sintassi MATLAB / Octave simile a diversi metodi numerici utili e anche alcune funzionalità di tracciatura. Attualmente ci sono funzioni per eig
, ode45
, fft
, linsolve
, svd
, interp1
, plot
, e molte altre funzioni comuni di MATLAB.
Mentre ci sono altri (molto buono) librerie che forniscono molte di queste funzioni (come l'Armadillo, Eigen, ecc), la maggior parte non sono complete librerie numeriche e la maggior parte del loro sintassi è dissimile la sintassi di MATLAB. Mentre KeyCpp inoltre, non è ancora una biblioteca numerica completa (ma sta migliorando tutto il tempo!), La sintassi è più vicino a MATLAB di come il linguaggio C ++ consente.
In KeyCpp, per tracciare la t
vettori e y
usiamo la seguente sintassi: (Vai qui per una più ampia 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. Bacio FFT, Gnuplot-cpp
documentazione Doxygen per la maggior parte delle funzioni si trova qui
Leggi la documentazione di Matlab con molta attenzione e hanno un poke intorno le DLL e gli altri componenti si installa sul vostro hard disk. Penso che troverete che Matlab utilizza una versione di BLAS per quello BLAS fa, forse anche LAPACK e altri.