10 febbraio 2010

Librerie mex in matlab per windows con compilatore gnu

In Matlab, i file MEX (matlab executable) permettono l'esecuzione di propri codici in C/C++ o Fortran direttamente dall'ambiente Matlab come se fossero delle funzioni o routines built-in. I principali vantaggi sono essenzialmente due: la possibilità di utilizzare codice scritto in C/C++ o Fortran senza il bisogno di riscriverlo come script m-file; inoltre, una maggiore efficienza di tale codice (soprattutto nei cicli for) riguardo i tempi di esecuzione.

L'inizializzazione del sistema di compilazione avviene eseguendo
mex -setup
dal prompt di Matlab.
In ambiente Windows, sono supportati una varietà di compilatori, come quelli Borland e Microsoft; tuttavia, in questa sede ci interessa configurare il sistema per l'utilizzo di strumenti GNU e/o open-source, che nativamente non sono presenti nel sistema. Possiamo optare per MinGW oppure per CygWin; noi abbiamo preferito il primo.
Una volta installato il compilatore con tutte le librerie, verificato che le variabili di ambiente sono correttamente configurate, passiamo alla configurazione del sitema mex tramite la comoda utility gnumex.




Tale utility va a creare lo script mexopts.bat che viene richiamato per ogni compilazione, invocando, con i giusti parametri, il compilatore gcc.
Se tutto è andato a buon fine, dovrebbe essere possibile eseguire la compilazione di un codice di esempio fornito con Matlab:
mex yprime.c
Le funzioni implementate nella nuova libreria yprime.dll, generata dalla compilazione del codice C, possono essere invocate come le usuali funzioni di Matlab:
yprime(1,1:4)

ans=
2.0000
8.9685
4.0000
-1.0947

Ulteriori informazioni:

Nessun commento:

Posta un commento