MATLAB ist eine Programmierumgebung technischen optimiert, um die Geschwindigkeit und Effizienz der Sprache C konkurrieren , wenn es um Vektor-Operationen kommt . Allerdings gibt es eine bestimmte Menge von Operationen an dem C ist viel effizienter . Es kann von Vorteil sein, bestimmte Teile des Workflow sowohl in MATLAB und C C -Programme schreiben können in MATLAB Unterprogramme mit dem " MEX " Dienstprogramm kompiliert werden. Anleitung
1
Erstellen Sie eine Kopie der C-Programm Datei, die Sie in eine MATLAB Unterprogramm anzupassen.
2
Fügen Sie das " mex.h " Header-Datei an die C Programm Datei, die Sie in eine MATLAB Unterprogramm kompilieren :
# include " mex.h "
3
eine Gateway-Funktion " mexFunction " Fügen Sie C Programmdatei nach dem Unterprogramm Funktion als Schnittstelle zwischen MATLAB und Ihren C-Code handeln . Die Argumente der " mexFunction " sollte alle Input-und Output Argumente für Ihr Unterprogramm .
4
Code schreiben, in " mexFunction ", um die Anzahl der benötigten Ein-und Ausgänge sowie die korrekte Validierung Datentyp , Größe und Reichweite. Die Sprache C und Funktionen nicht so anmutig wie scheitern Skript -basierte MATLAB-Funktionen
5
Benutzen Sie den " mexErrMsgIdAndTxt () "-Funktion , um Fehler zu MATLAB werfen, wenn Argumente falsch sind : .
mexErrMsgIdAndTxt ( " MyToolbox : myMexFunction : missingInput ", " . . Fehlender Eingang myMexFunction benötigt 2 Eingänge") ;
6
Nutzungsbedingungen MEX "Getter "-Funktionen von MATLAB -Format konvertieren Eingabedaten an C -Format Daten:
myNumber = mxGetScalar ( myInputs [ 0]); myMatrixPointer = mxGetPr ( myInputs [1] );
Siehe MATLAB Dokumentation für eine vollständige Liste dieser Funktionen.
7
Nutzungsbedingungen MEX "schaffen" Funktionen zum Erstellen MATLAB Daten , in dem das Ergebnis der C-Funktion speichern. Die " mxREAL " Eingang gibt den Datentyp
myOutputs [0] = mxCreateDoubleMatrix (1, nColumns , mxREAL ); . OutputMatrixInMATLAB = mxGetPtr ( myOutputs [ 0]);
8
Rufen Sie Ihren C Subroutine aus Ihrem " mexFunction . "
9
Direkte MATLAB das aktuelle Arbeitsverzeichnis in das Verzeichnis mit Ihren C-Datei über das Menü Datei oder den Befehl "cd" , um das Verzeichnis zu wechseln . von der Kommandozeile
10
Kompilieren Ihrem C-Programm mit dem MATLAB- Befehl " mex : "
mex myMexFunction.c
11
Execute Ihre Funktion in MATLAB :
myMexFunction (Eingänge, Ausgänge , ...) in