Azzera filtri
Azzera filtri

simulinkでMEX関数を使いたい

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

Risposta accettata

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

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su Simulink Function in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!