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

发布于 2024-11-06 19:09:56 字数 117 浏览 0 评论 0原文

我知道 mex 函数的所有返回值都存储在 mxArray* 类型的 plhs 数组中。我想返回一个float类型的值。我该怎么做呢?

非常感谢一些有关从 mex 函数返回它并从 m 文件检索它的代码示例。

I understand that all the returned values of a mex function are stored in plhs array of type mxArray*. I want to return a value of type float. How can I do it?

Some code examples on returning it from the mex function and retrieving it from the m-file is much appreciated.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

蓝戈者 2024-11-13 19:09:56

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] 中。

The MATLAB class name for float type data is "single".

In the MEX-file you could write:

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;
}

Retrieving it from the M-file is pretty much like calling any other function. If you named the MEX-function foo, you'd call it like this:

>> x = foo;

Now x would contain the single-precision value equivalent to single([1 2 3; 4 5 6]) that was stored in plhs[0].

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文