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.
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:
pr
zeigt nun auf den reellen Teil von array_ptr
, ein Array von unsigned char
.
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.