simulinkでMEX関数を使いたい

3 views (last 30 days)
Kento SHIRAKATA
Kento SHIRAKATA on 29 Jul 2019
Commented: Kento SHIRAKATA on 30 Jul 2019
タイトルのとおりです.
matlab上では動作するmex関数を持っています.
これを,simulinkのMatalab functionでmatalbと同様に記述したところ,coder.extrinsicを利用して外部関数として宣言することを検討してください
とエラーが出ました.
どうすれば良いでしょうか?
例えば,
Afunction.mexw64
を持っているときに,matlab上ではy = Afunction(u);で正常に動作しています.
これを,SimulinkのMatlab function上で利用したいのです.

Accepted Answer

Yoshio
Yoshio on 29 Jul 2019
コード生成機能は、plotdispfigureなどの可視化関数には対応していません。
mexをMATLABで動作させると、この部分はMATLABが呼びだされますが、Simulinkでは明示的に外部関数だと指示して、この場合はMATLABを呼ぶようにします。
例えば、coder.extrinsic('plot')等とします。
該当する関数の部分でエラーが出るはずですので、その関数をcoder.extrinsicを使って先のように指定すればよいはずです。
  3 Comments
Yoshio
Yoshio on 30 Jul 2019
Coderは一回のみ実行されるはずなので、問題は他にあると思います。Simulinkではデータが入力される毎に処理して出力するという流れですので、これに合わせたプログラムにする必要があります。
入出力で変数を介して行うと時間が掛かります。persistent宣言を行ってこれを回避する方法があります。こちらのでExitKalmanを開き、使い方を見ると参考になるかと思います。
Kento SHIRAKATA
Kento SHIRAKATA on 30 Jul 2019
ありがとうございます.
必要なもののみを入力と設定しましたが,改善されませんでした.
原因はcoderではなく,MEX関数そのものでした.

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!