Wie in C-Schnittstelle zu MATLAB

May 12

Wie in C-Schnittstelle zu MATLAB

MATLAB ist eine technische Programmierumgebung, Rivalen, die Geschwindigkeit und Effizienz der C-Sprache, wenn es darum geht, Vektor-Operationen optimiert. Allerdings gibt es eine bestimmte Gruppe von Operationen an denen C wesentlich effizienter ist. Es kann bestimmte Teile Ihres Workflows in MATLAB und C. C zu schreiben, dass Programme in MATLAB-Subroutinen, die mithilfe des Dienstprogramms "MEX" kompiliert werden können von Vorteil sein.

Anweisungen

1 Erstellen Sie eine Kopie der Datei des C-Programms in eine MATLAB-Unterroutine anpassen möchten.

2 Fügen Sie die Header-Datei "mex.h" auf die C-Programmdatei, die Sie in eine MATLAB-Unterroutine kompilieren möchten:

"mex.h" 3 enthalten Fügen Sie eine Gatewayfunktion "MexFunction" auf Ihrem C-Programmdatei nach Ihr Unterroutine Funktion als Schnittstelle zwischen MATLAB und C Code handeln. Die Argumente der "MexFunction" sollte alle Eingabe- und Argumente für die Unterroutine enthalten.

4 Schreiben Sie Code in "MexFunction", um die Anzahl der erforderlichen Eingaben und Ausgaben, sowie die geeigneten Datentyp, Größe und dem Bereich zu überprüfen. Die C-Sprache und Funktionen Scheitern nicht ordnungsgemäß als skriptbasierte MATLAB-Funktionen.

5 Verwenden Sie die Funktion "mexErrMsgIdAndTxt()", um Störungen zu MATLAB zu werfen, wenn Argumente nicht korrekt sind:

MexErrMsgIdAndTxt ("MyToolbox:myMexFunction:missingInput", "Fehlende Eingabe. MyMexFunction erfordert 2 Eingänge.");

6 Verwenden Sie MEX "Getter" Funktionen zur Konvertierung von MATLAB Format Eingabedaten in C-Format-Daten:

MyNumber = mxGetScalar(myInputs[0]);MyMatrixPointer = mxGetPr(myInputs[1]);

Finden Sie MATLAB Dokumentation für eine vollständige Liste dieser Funktionen.

7 Verwenden Sie "erstellen" MEX-Funktionen MATLAB Daten zum Speichern Sie des Ergebnis Ihrer C-Funktion erstellen. Die Eingabe von "MxREAL" gibt den Datentyp.

MyOutputs [0] = mxCreateDoubleMatrix(1,nColumns,mxREAL);OutputMatrixInMATLAB = mxGetPtr(myOutputs[0]);

8 Rufen Sie Ihre C-Unterroutine aus innerhalb Ihres "MexFunction."

9 Direkte MATLAB aktuelle Arbeitsverzeichnis in das Verzeichnis, Ihre C-Datei mit dem Datei-Menü oder den Befehl "cd" Verzeichnisse von der Befehlszeile aus zu ändern.

10 Kompilieren Sie Ihre C-Programm, mit dem MATLAB-Befehl "Mex:"

MEX-myMexFunction.c

11 Führen Sie Ihre Funktion in MATLAB:

MyMexFunction (Eingänge, Ausgänge,...)