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.