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, ...)