MatlabのワークスペースからS-Function(.cppとwrapper.cpp)変数を取得したいと考えています。S関数の変数をワークスペースから取得
どうすればいいですか?
ありがとうございました。
MatlabのワークスペースからS-Function(.cppとwrapper.cpp)変数を取得したいと考えています。S関数の変数をワークスペースから取得
どうすればいいですか?
ありがとうございました。
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を参照してください。
私は例があります。
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
彼らは真のグローバルな意味を持っている場合にのみ、ワークスペースからの値を使用する必要があります。 私の例では特別なステップ期間の値です。これは余分なパラメータを与えるべきではありません。