wie man ein Integer-Array in der MEX-Funktion liest

8

Ich übergebe ein Ganzzahl-Array vom Typ Uint8 von MATLAB an eine MEX-Funktion. Wie lese ich diese Werte? Ich habe versucht mit:

%Vor%

aber die Werte kommen als Müll raus. Ich habe es auch versucht

%Vor%

und in diesem Fall erscheinen auch Junk-Werte.

Was ist die Lösung dafür?

Grundsätzlich möchte ich den ganzzahligen Wert in der MEX-Funktion lesen, aber mxGetPr gibt den doppelten Typ zurück.

    
Madhu 06.06.2011, 06:42
quelle

2 Antworten

8

Sehen Sie sich die Demo-MEX-Funktion explore.c an, die Sie in MATLAB mit

öffnen können %Vor%

Dort finden Sie eine Reihe von Funktionen, deren Namen alle mit analyze_ und dann einem Typ beginnen (zum Beispiel analyze_uint8 ). In diesen Funktionen sehen Sie, wie die Aufrufe von mxGetData an einen bestimmten C-Typ übergeben werden:

%Vor%

pr zeigt nun auf den reellen Teil von array_ptr , ein Array von unsigned char .

    
SCFrench 06.06.2011 20:38
quelle
1

Sie sollten sicherstellen, dass die Anzahl der gelesenen Bytes und die Interpretation dieser Bytes in den Eingabedaten (die von Matlab kommen) und im Ausgabe-Array (dem Array, in das Sie in die mex-Funktion eingelesen haben) identisch ist ). Da uint8 8 Bits lang ist, lesen sowohl double als auch int eine falsche Anzahl von Bytes und interpretieren diese Bytes falsch.

Fügen Sie stdint.h header ein und verwenden Sie den Datentyp uint8_t für das Array, in das Sie eingelesen haben.

    
Itamar Katz 06.06.2011 07:25
quelle

Tags und Links