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

1 回表示 (過去 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 件)

カテゴリ

Help Center および File ExchangeNaming Conventions についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by