2017-01-19 65 views

答えて

0

mexCallMATLAB関数を使用してS-FunctionからMATLABを呼び出すことができます。 mexCallMATLABを使用すると、S-Functionから任意のMATLAB関数を呼び出すことができます。これをevalin関数と組み合わせると、ベースワークスペースから変数を取得できます。 mexCallMATLABを呼び出すための構文は、あなたは、文字列「ベース」、および変数の名前で2番目の引数であるためにあなたのfunctionNameをする「関数evalin」とprhsの最初の引数を設定する必要があり

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

です。

これまで、s-functionに変数を取得するための推奨される方法は、パラメータを使用する方法でした。 s-functionにパラメータを追加し、パラメータ値として変数を指定することができます。このパラメータは、ssGetSFcnParamのような標準のs-function API関数を使用して、s-functionからアクセスできます。 docのhttps://www.mathworks.com/help/simulink/sfg/ssgetsfcnparam.htmlに記載されている例のs-functionを参照してください。

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 

彼らは真のグローバルな意味を持っている場合にのみ、ワークスペースからの値を使用する必要があります。 私の例では特別なステップ期間の値です。これは余分なパラメータを与えるべきではありません。

関連する問題