MEXファイルで初期​化ルーチンを実行する​には、どのようにCコ​ードを書けば良いです​か?

1 view (last 30 days)
Shoumei
Shoumei on 21 Mar 2017
Commented: Shoumei on 21 Mar 2017
既存のCコードがあり、MATLAB、Simulink両方で使いたいので、MEX化を行って使用しようと思っています。 SimulinkではMEXファイルをSystem Objectのラッパーからコールして使用します。 Cコードアルゴリズムには状態量があるので、Simulinkで繰り返しコールして実行する場合には、状態を初期化する必要があります。
  1. Simulinkで最初のシミュレーションステップで呼ばれるときは初期化+メインルーチンが実行される
  2. 次回以降のステップではメインルーチンのみが実行される
どのようにMEXファイルを書けばよいか指南して頂けると助かります。

Accepted Answer

michio
michio on 21 Mar 2017
Edited: michio on 21 Mar 2017
  1 Comment
Shoumei
Shoumei on 21 Mar 2017
ミチオさん、ありがとうございました。 サンプルコードと同じようにしたらできました。
あと、引数で指定する方法でも行けました。(以下は一部抜粋)
exflag = mxGetScalar(prhs[1]);
if (exflag == 0){
init_fcn();
// mexPrintf("init %f \n", exflag);
} else {
main_fcn(indata, outdata);
// mexPrintf("main %f \n", exflag);
return;
}

Sign in to comment.

More Answers (0)

Products

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!