如何从mex函数返回浮点值,以及如何从m文件中检索它?

dro*_*rox 7 matlab mex

据我所知,mex函数的所有返回值都存储在mxArray*类型的plhs数组中.我想返回float类型的值.我该怎么做?

关于从mex函数返回它并从m文件中检索它的一些代码示例非常受欢迎.

SCF*_*nch 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;
}
Run Code Online (Sandbox Code Playgroud)

从M文件中检索它与调用任何其他函数非常相似.如果你命名MEX函数foo,你会这样称呼它:

>> x = foo;
Run Code Online (Sandbox Code Playgroud)

现在x将包含与single([1 2 3; 4 5 6])存储的单精度值等效的单精度值plhs[0].