simulinkでMEX関数を使いたい

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

Réponse acceptée

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

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur MATLAB Compiler dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!