1

我正在研究 simulink 中的 S 函数。MATLAB 工作区中有一些可用的变量。我想给他们打电话。

所以在 MATLAB 中:

a=3;

在 S 函数中(用 C/C++ 编写):

double a = CallFromMATLABWorkSpace(a);  //Something like this.

我该怎么做呢?有类似的东西,mexCallMATLAB但不清楚在这种情况下我应该如何使用它。

4

2 回答 2

6

要从工作区获取数据,请使用函数mexGetVariable

然而,这是一件有些不寻常的事情。为什么不将数据作为参数传递给 S-Function?

于 2013-09-30T21:31:56.067 回答
0

从我在文档中看到的内容mexCallMATLAB,以及与 C++ 源代码的互操作,它看起来类似于以下内容:

假设您有一个 MatLab 函数MyDoubleFunction,它采用单个双精度标量值并返回一个双精度标量值。如果您想向函数传递一个值4.0并查看答案是什么,您可以执行以下操作:

//setup the input args
mxArray* input_args[1] = {mxCreateDoubleScalar(4.0)};
mxArray** output_args; //will be allocated during call to mexCallMATLAB

//make the call to the Matlab function
if (mexCallMATLAB( 1 /* number of output arguments */,
                   output_args,
                   1 /* number of input arguments */,
                   &input_args,
                   "MyDoubleFunction"))
{
    //error if we get to this code block since it returned a non-zero value
}

//inspect the output arguments
double answer = mxGetScalar(*output_args);
于 2013-09-30T19:32:22.193 回答