MATLAB er et teknisk programmering miljø optimalisert for å konkurrere med hastigheten og effektiviteten av C-språk når det kommer til vektor operasjoner . Det er imidlertid et visst sett av operasjoner ved hvilke C er mye mer effektivt . Det kan være gunstig å skrive visse deler av arbeidsflyten i både MATLAB og C. C-programmer kan kompileres inn MATLAB subrutiner ved hjelp av " MEX "-verktøyet . Instruksjoner
en
Lag en kopi av C-program filen du ønsker å tilpasse til en MATLAB subrutine .
2
Legg til " mex.h " header -fil til C-program filen du ønsker å kompilere inn en MATLAB subrutine : en
# include " mex.h "
3
Legg til en gateway-funksjon " mexFunction " til C programfilen etter at subrutinen funksjon å fungere som et grensesnitt mellom MATLAB og C-kode . Argumentene til " mexFunction " bør omfatte all input og output argumenter for subrutine din .
4
Skriv koden i " mexFunction " for å validere antall nødvendige innganger og utganger , samt riktig data type, størrelse og rekkevidde. C-språk og fungerer ikke mislykkes så grasiøst som script - baserte MATLAB funksjoner
5
Bruk " mexErrMsgIdAndTxt ( ) "-funksjonen til å kaste feil til MATLAB når argumentene er feil : .
mexErrMsgIdAndTxt ( " MyToolbox : myMexFunction : missingInput ", " . . Manglende Input myMexFunction krever to 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 til å lagre resultatet av din C funksjonen . Den " mxREAL " input angir 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 din C -fil ved å bruke fil -menyen eller "cd "-kommandoen til å endre kataloger . fra kommandolinjen
10
Kompiler C-program ved hjelp av MATLAB kommandoen " mex : "
mex myMexFunction.c
11
Execute din funksjon i MATLAB : en
myMexFunction ( innganger , utganger, ... )