7

mex関数のすべての戻り値がmxArray*型のplhs配列に格納されていることを理解しています。float型の値を返したい。どうすればいいですか?

mex関数からそれを返し、m-ファイルからそれを取得する際のいくつかのコード例は非常に高く評価されています。

4

1 に答える 1

9

float型データのMATLABクラス名は「single」です。

MEXファイルには次のように書くことができます。

void mexFunction(int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[])
{
    // Create a 2-by-3 real float
    plhs[0] = mxCreateNumericMatrix(2, 3, mxSINGLE_CLASS, mxREAL);

    // fill in plhs[0] to contain the same as single([1 2 3; 4 5 6]); 
    float * data = (float *) mxGetData(plhs[0]);
    data[0] = 1; data[1] = 4; data[2] = 2; 
    data[3] = 5; data[4] = 3; data[5] = 6;
}

Mファイルから取得することは、他の関数を呼び出すこととほとんど同じです。MEX関数fooに名前を付けた場合は、次のように呼び出します。

>> x = foo;

これで、に格納されたxものと同等の単精度値が含まれるようになります。single([1 2 3; 4 5 6])plhs[0]

于 2011-05-10T01:16:24.840 に答える