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

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

採用された回答

michio
michio 2017 年 3 月 21 日
編集済み: michio 2017 年 3 月 21 日
  1 件のコメント
Shoumei
Shoumei 2017 年 3 月 21 日
ミチオさん、ありがとうございました。 サンプルコードと同じようにしたらできました。
あと、引数で指定する方法でも行けました。(以下は一部抜粋)
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;
}

サインインしてコメントする。

その他の回答 (0 件)

Community Treasure Hunt

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

Start Hunting!

Translated by