2017-01-19 52 views

回答

0

您可以使用mexCallMATLAB函數從S函數調用MATLAB。使用mexCallMATLAB,您可以從S-Function調用任何MATLAB函數。結合evalin函數,你可以從基本工作區獲得一個變量。調用mexCallMATLAB語法

int mexCallMATLAB(int nlhs, mxArray *plhs[], int nrhs, 
    mxArray *prhs[], const char *functionName); 

你應該設置你的functionName爲「evalin」和prhs的第一個參數是字符串「基地」,二是變量的名稱參數。

話雖如此,推薦的方法是通過參數獲取變量到s函數。您應該爲s函數添加一個參數,然後您可以將您的變量指定爲參數值。該參數可以通過使用標準s函數API函數(如ssGetSFcnParam)從s函數訪問。參見文檔https://www.mathworks.com/help/simulink/sfg/ssgetsfcnparam.html中提到的示例s函數。

0

我有一個例子:

double Tinit; 
mxArray* args[2]; 
args[0] = mxCreateString("base"); 
args[1] = mxCreateString("Tinit"); 
mxArray* out; 
mexCallMATLAB(1, &out, 2, args, "evalin"); //eval in workspace base 
Tinit = *mxGetPr(out); //gets the double result 

時,他們有一個真正的全球意義,才應使用值從工作區。 在我的例子中,它是一個特殊的步長時間段的值,它不應該提供額外的參數。