10

MATLAB から MEX 関数に uint8 型の整数配列を渡しています。これらの値の読み方は? 私は使用してみました:

int *n;
n = (int * ) mxGetData(prhs[0]);

しかし、値はがらくたとして出てきます。私も試しました

double *n;
n= mxGetPr(prhs[0]);

この場合、ジャンク値も表示されます。

これに対する解決策は何ですか?

基本的にはMEX関数で整数値を読みたいのですが、mxGetPrdouble型を返します。

4

2 に答える 2

10

次を使用して MATLAB で開くことができるデモ MEX 関数 explore.c を見てください。

edit([matlabroot '/extern/examples/mex/explore.c']);

そこには、名前がすべてで始まりanalyze_、その後に型 (たとえば、analyze_uint8) が続く一連の関数があります。mxGetDataこれらの関数では、次のように、特定の C 型にキャストされる呼び出しの出力が表示されます。

pr = (unsigned char *)mxGetData(array_ptr);

prarray_ptrの配列であるの実部を指すようになりましたunsigned char

于 2011-06-06T20:38:45.820 に答える
1

読み取るバイト数とこれらのバイトの解釈が、入力データ (Matlab から取得) と出力配列 (mex 関数で読み取る配列) で同じであることを確認する必要があります。uint8は 8 ビット長であるため、 と の両方がdouble誤っintた数のバイトを読み取り、これらのバイトを誤って解釈します。

stdint.hヘッダーを含めてuint8_t、読み込む配列のデータ型を使用してください。

于 2011-06-06T07:25:45.020 に答える