Alla esimerkit liittyvät Matlab versio 4:n mex-koodiin. Uusimmissa versioissa ovat API-kutsut hieman muuttuneet.
MEX-tiedostojen avulla voi MATLABista käsin käyttää ulkoisia c- tai fortran-kielisiä ohjelmia aivan kuin ne olisivat tavallisia MATLAB-funktioita. Jotta tämä olisi mahdollista täytyy ohjelma olla kirjoitettu tietyn kaavan mukaisesti. Vaihtoehtoisesti on kirjoitettava uusi 'päällysfunktio', jonka kutsu on tämän MEX-mallin mukainen.
Seuraava c-kielinen ohjelma kutsuu NAG-aliohjelmakirjaston
funktiota
S15AEF
('error'-funktio) ja on kirjoitettu niin, että
sen voi kääntää MEX-tiedostoksi
(Tämä on Matlabin version 4 mukaista MEX-koodia).
/* Simple CMEX routine to call NAG special function */ #include "cmex.h" extern double s15aef_(double *x, int *ifail); void mexFunction(int nout, Matrix *pout[], int nin, Matrix *pin[]) { int i,m,n, ifail; double x; /* Check the number of input and output arguments */ if (nin != 1) mexErrMsgTxt("Needs 1 input parameter"); else if (nout > 1) mexErrMsgTxt("Only 1 output argument"); m = mxGetM(pin[0]); /* Get the size of input matrix */ n = mxGetN(pin[0]); pout[0] = mxCreateFull(m,n,REAL); /* Create output matrix */ ifail = 1; for (i=0;i<m*n;i++) { /* Call the NAG routine in loop */ x = (mxGetPr(pin[0]))[i]; (mxGetPr(pout[0]))[i] = s15aef_(&x,&ifail); } }
C-MEX-koodin on siis sisällettävä funktio mexFunction
,
jonka kutsu on esimerkin mukainen. Lisäksi käytettävissä on joukko
apufunktioita MEX-funktion parametrien ja MATLAB-istunnon muuttujien
käsittelemiseksi (esimerkissä funktiot mexErrMsgTxt
,
mxGetM
, mxGetN
, mxCreateFull
ja
mxGetPr
).
Koodi käännetään MATLABin mukana tulevalla komennolla
fmex
. NAG-kirjasto saadaan mukaan linkkaukseen optiolla
-lnag
:
klaava% fmex simple.c -lnag
Nyt oletushakemistossa on tiedosto simple.mex
, jonka
MATLAB tunnistaa, ja simple
-funktiota kutsuttaessa
suorittaa siihen koodatun ohjelman.
Lisää infoa MEX-tiedostojen tekemisestä: MathWorks Technical Notes 1605 ja External Interfaces/API-dokumentti.