MATLAB är ett tekniskt programmeringsmiljö optimerad för att konkurrera hastigheten och effektiviteten av C-språket när det gäller vektoroperationer . Det finns dock en viss serie av åtgärder där C är mycket effektivare . Det kan vara fördelaktigt att skriva vissa delar av ditt arbetsflöde i både MATLAB och C. C-program kan kompileras till MATLAB subrutiner som använder " MEX " utility . Instruktioner
1
Skapa en kopia av C-programmet filen du vill anpassa sig till en MATLAB subrutin .
2
Lägg till " mex.h " header -filen till C programfil du vill kompilera in en MATLAB subrutin :
# include " mex.h " Addera 3
Lägg en gateway -funktion " mexFunction " till C programfilen efter din subrutin att fungera som ett gränssnitt mellan MATLAB och din C-kod . De argument " mexFunction " bör omfatta all input och output argument för din subrutin .
4
Skriv koden i " mexFunction " för att validera antalet nödvändiga ingångar och utgångar , samt korrekt datatyp , storlek och sortiment . Den C-språk och funktioner inte misslyckas så graciöst som script - baserade MATLAB -funktioner
5
Använd " mexErrMsgIdAndTxt ( ) " -funktion för att kasta fel till MATLAB när argumenten är felaktiga : .
mexErrMsgIdAndTxt ( " MyToolbox : myMexFunction : missingInput " , " . . Missing Input myMexFunction kräver 2 ingångar " ) ;
6
Använd Mex " getter" -funktioner för att konvertera från MATLAB -format indata till C formatdata :
myNumber = mxGetScalar ( myInputs [ 0 ] ) ; myMatrixPointer = mxGetPr ( myInputs [ 1 ] ) ;
Se MATLAB dokumentationen för en fullständig förteckning över dessa funktioner .
7
Använd MEX "Skapa" -funktioner för att skapa MATLAB uppgifter där för att lagra resultatet av din C-funktion . Den " mxREAL " input anger datatypen
myOutputs [ 0 ] = mxCreateDoubleMatrix ( 1 , nColumns , mxREAL ) . OutputMatrixInMATLAB = mxGetPtr ( myOutputs [ 0 ] ) ;
8
Ring din C subrutin inifrån " mexFunction . "
9
Direkt MATLAB nuvarande arbetskatalog till katalogen som innehåller C- fil med hjälp av Arkiv-menyn eller " cd" för att ändra kataloger . från kommandoraden
10
Sammanställ din C-program med hjälp av MATLAB -kommandot " mex : "
mex myMexFunction.c
11
Utför din funktion i MATLAB :
myMexFunction ( ingångar, utgångar, ... ) katalog