如何从S函数调用matlab变量?

时间:2013-09-30 19:20:58

标签: c++ c matlab simulink

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

所以在MATLAB中:

a=3;

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

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

我该怎么做?有类似mexCallMATLAB之类的内容,但在这种情况下我不应该如何使用它。

2 个答案:

答案 0 :(得分:6)

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

但是,这有点不寻常。 为什么数据不作为参数传递给S-Function?

答案 1 :(得分:0)

我在mexCallMATLAB的文档以及interoping with C++ source code中看到的内容如下所示:

假设你有一个MatLab函数MyDoubleFunction,它接受​​一个标量double值并返回一个标量double值。如果您希望将函数传递给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);