Hvordan grensesnittet C til MATLAB

Hvordan grensesnittet C til MATLAB


MATLAB er et teknisk programmering miljø optimalisert for å måle hastigheten og effektiviteten av C-språk når det gjelder vektoroperasjoner. Det er imidlertid et visst sett av operasjoner hvor C er mye mer effektiv. Det kan være gunstig å skrive visse deler av arbeidsflyten i både Matlab og C. C-programmer kan kompileres inn i MATLAB subrutiner med "MEX" -verktøyet.

Bruksanvisning

1 Lag en kopi av C-program filen du ønsker å tilpasse til en MATLAB subrutine.

2 Tilsett "mex.h" header filen til C program filen du ønsker å kompilere inn en MATLAB subrutine:

inkludere "mex.h"

3 Legg en gateway funksjon "mexFunction" til C programfilen etter subrutine funksjon å fungere som et grensesnitt mellom MATLAB og din C-kode. Argumentene til "mexFunction" skal omfatte all inn- og utgående argumenter for subrutine.

4 Skrive kode i "mexFunction" for å validere antall nødvendige innganger og utganger, samt riktig datatype, størrelse og rekkevidde. C-språk og fungerer ikke mislykkes så grasiøst som skriptbaserte MATLAB funksjoner.

5 Bruk "mexErrMsgIdAndTxt ()" -funksjonen til å kaste feil å MATLAB når argumentene er feil:

mexErrMsgIdAndTxt ( "MyToolbox: myMexFunction: missingInput", "Manglende Input myMexFunction krever 2 innganger..");

6 Bruk MEX "getter" funksjoner for å konvertere fra MATLAB format inngangsdata til C format data:

myNumber = mxGetScalar (myInputs [0]);
myMatrixPointer = mxGetPr (myInputs [1]);

Se MATLAB dokumentasjon for en fullstendig liste over disse funksjonene.

7 Bruk Mex "skape" funksjoner for å skape MATLAB data der du vil lagre resultatet av din C funksjon. Den "mxREAL" input spesifiserer datatype.

myOutputs [0] = mxCreateDoubleMatrix (1, nColumns, mxREAL);
outputMatrixInMATLAB = mxGetPtr (myOutputs [0]);

8 Ring C subrutine fra din "mexFunction."

9 Direkte MATLAB nåværende arbeidskatalog til katalogen som inneholder C-fil ved å bruke Fil-menyen eller "cd" -kommandoen til å endre kataloger fra kommandolinjen.

10 Kompilere C-program ved hjelp av MATLAB kommandoen "mex:"

mex myMexFunction.c

11 Utfør din funksjon i MATLAB:

myMexFunction (innganger, utganger, ...)