Как вызвать переменную matlab из функции S?

Я работаю над функцией S в Simulink. В рабочей области MATLAB есть несколько переменных. Я хочу позвонить им.

Итак, в MATLAB:

a=3;

и в функции S (написано на C / C ++):

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

Как мне это сделать? Есть что-то вроде mexCallMATLAB но не ясно, как я должен использовать это в этой ситуации.

1

Решение

Чтобы получить данные из рабочей области, используйте функцию mexGetVariable.

Однако это довольно необычная вещь.
Почему данные не передаются в качестве параметра в S-функцию?

6

Другие решения

Из того, что я могу увидеть в документации для 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);
0

По вопросам рекламы [email protected]