我了解 mex 函数的所有返回值都存储在 mxArray* 类型的 plhs 数组中。我想返回一个浮点类型的值。我该怎么做?
非常感谢一些关于从 mex 函数返回它并从 m 文件中检索它的代码示例。
浮点类型数据的 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-function foo
,你会这样称呼它:
>> x = foo;
现在x
将包含与single([1 2 3; 4 5 6])
存储在plhs[0]
.