MATLAB is een technisch programmeeromgeving geoptimaliseerd om de snelheid en efficiëntie van de taal C wedijveren als het gaat om vector operaties . Er zijn echter bepaalde reeks handelingen waarbij C is veel efficiënter . Het kan gunstig zijn voor bepaalde delen van uw workflow in zowel MATLAB en C. C programma's te schrijven kan worden gecompileerd in MATLAB subroutines met behulp van de " MEX " utility . Instructies 1 Maak een kopie van het C -programma bestand dat u wilt aanpassen in een MATLAB subroutine . Kopen van 2 Voeg de " mex.h " header -bestand naar de C -programma bestand dat u wilt compileren in een MATLAB subroutine : # include " mex.h " 3 Voeg een gateway -functie " mexFunction " om uw C programmabestand na uw subroutine functie op te treden als een interface tussen MATLAB en uw C -code . De argumenten van de " mexFunction " moet alle input en output argumenten voor uw subroutine . Schrijf code in " mexFunction " om het aantal benodigde in-en uitgangen , alsmede de juiste valideren 4 data type, de grootte en het bereik . De taal C en functies falen niet zo gracieus als script - gebaseerde MATLAB functies 5 Gebruik de " mexErrMsgIdAndTxt ( ) " functie om fouten te gooien naar MATLAB als argumenten zijn onjuist : . mexErrMsgIdAndTxt ( " MyToolbox : myMexFunction : missingInput " , " . . Ontbrekende Input myMexFunction vereist 2 inputs " ) ; 6 Gebruik MEX " getter " -functies om te zetten van MATLAB -formaat invoergegevens naar C formaat data : myNumber = mxGetScalar ( myInputs [ 0 ] ) ; myMatrixPointer = mxGetPr ( myInputs [ 1 ] ) ; Zie MATLAB documentatie voor een volledige lijst van deze functies . 7 Gebruik MEX " creëren" functies om MATLAB data te creëren waarin het resultaat van uw C functie op te slaan . De " mxREAL " ingang geeft het type gegevens myOutputs [ 0 ] = mxCreateDoubleMatrix ( 1 , nColumns , mxREAL ) ; . OutputMatrixInMATLAB = mxGetPtr ( myOutputs [ 0 ] ) ; 8 Bel uw C subroutine vanuit uw " mexFunction . " huidige directory Direct MATLAB 9 naar de map met uw C -bestand via het menu Bestand of de "cd " commando om mappen te veranderen . vanaf de opdrachtregel 10 Stel uw C -programma met behulp van de MATLAB commando " mex : " mex myMexFunction.c 11 Uitvoeren uw functie in MATLAB : myMexFunction ( ingangen, uitgangen , ... ) op Twitter
|