MATLAB er en teknisk programmeringsmiljø optimeret til rivaliserende hastigheden og effektiviteten af C-sprog , når det kommer til vektor operationer. Men der er et bestemt sæt af operationer , hvor C er meget mere effektiv. Det kan være en fordel at skrive visse dele af din arbejdsgang i både Matlab og C. C-programmer kan samles i MATLAB subrutiner ved hjælp af " MEX " nytte . Instruktioner
1
Opret en kopi af C-programmet fil, du ønsker at tilpasse sig ind i en MATLAB subrutine .
2
Tilføj " mex.h " header fil til C-program fil, du ønsker at kompilere i en MATLAB subrutine : Hej
# include " mex.h "
3
Tilføj en gateway funktion " mexFunction " til din C programfil efter din subrutine til at fungere som forbindelsesled mellem MATLAB og din C-kode . De argumenter " mexFunction " bør omfatte alle input -og output- argumenter for din subrutine .
4
Skriv kode i " mexFunction " for at validere antallet af nødvendige indgange og udgange , samt den korrekte data type, størrelse og rækkevidde. C-sprog og fungerer ikke svigte så yndefuldt som script -baserede MATLAB funktioner
5
Brug " mexErrMsgIdAndTxt ()" funktionen til at kaste fejl til Matlab , når argumenterne er forkerte : .
mexErrMsgIdAndTxt ( " MyToolbox : myMexFunction : missingInput ", " . . Manglende Input myMexFunction kræver 2 indgange ")
6
MEX " getter "-funktioner til at konvertere fra MATLAB format input data til C format data:
mynumber = mxGetScalar ( myInputs [0 ]) myMatrixPointer = mxGetPr ( myInputs [1] ),
Se MATLAB dokumentationen for en komplet liste over disse funktioner.
7
MEX "Opret" funktioner til at oprette MATLAB data til at gemme resultatet af din C-funktion . Den " mxREAL " input angiver den datatype
myOutputs [0 ] = mxCreateDoubleMatrix (1, nColumns , mxREAL ) . OutputMatrixInMATLAB = mxGetPtr ( myOutputs [0 ])
8 < p > Ring til din C subrutine indefra din " mexFunction ".
9
Direct MATLAB nuværende arbejdsmappe til den mappe , der indeholder dit C fil ved hjælp af menuen Filer eller "cd " kommando til at ændre mapper . fra kommandolinjen
10
kompilere din C-program ved hjælp af MATLAB kommandoen " mex : "
mex myMexFunction.c
11
Udfør Deres funktion i MATLAB : Hej
myMexFunction ( input, output , ...)