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?

È stato utile?

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

Mi piace anche

  • Armadillo (su modelli libreria C ++)
  • Eigen (un altro su modelli libreria C ++)
  • NEWMAT (una libreria C ++ matrice vecchio ma ben collaudato)

Oltre a ciò, la sua domanda originale non è in realtà abbastanza specifico per i puntatori migliori.

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;
}

uscita Plot da esempio.

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

Al di là dei buoni suggerimenti già dato, si può anche essere in grado di sollevare il codice necessario dal codice sorgente di Octave o Scilab . Entrambi questi hanno licenze in stile GPL, però, che non può soddisfare le vostre esigenze.

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top