SimulinkのMatlab functionで配列を保持する方法について

SimulinkでMatlab functionを使用し配列を計算。
その配列を次のステップでもMatlab functionで使用したいのですが、配列を保持する方法がわかりません。
Simulink で配列を保持する方法について教えていただきたいです。

 Respuesta aceptada

Toshinobu Shintai
Toshinobu Shintai el 15 de Mzo. de 2020

0 votos

配列に限らず、Simulinkで変数を保持するためには「persistent」を使う必要があります。
関数の最初の方で以下のように記述します。
persistent a;
if isempty(a)
a = zeros(3,1);
end
この場合「a」がstatic変数扱いとなり、次の計算ステップまで値を保持するようになります。
「if isempty」のところは、aの初期化を行っています。ここで任意の値に初期化することができます。初期化は必ず行ってください。

4 comentarios

Kenjirou Oomori
Kenjirou Oomori el 16 de Mzo. de 2020
返信ありがとうございます。
早速Simulinkに上記のプログラムをコピー&ペーストしましたが、以下の様なエラーが出ました。
「MATLAB Function は、ブロックが連続サンプル時間を指定または継承するときに無効である構造を使用しています。無効な構造には、永続変数またはグローバル変数の使用、エクスポートした関数の呼び出し、または coder.extrinsic の使用が含まれます。」
なぜ無効な構造というのが発生しているのでしょうか?
よろしくお願いいたします。
Toshinobu Shintai
Toshinobu Shintai el 16 de Mzo. de 2020
初めて見るエラーです。
私の方でR2019b、R2015a、R2011bで確認しましたが、全てエラーなく動作していましたので、バージョンの問題では無いと思います。ブロックは連続サンプル時間を継承しています。
コードの使い方をもう少し詳しく教えていただくか、モデルを貼っていただけませんでしょうか。
Kenjirou Oomori
Kenjirou Oomori el 16 de Mzo. de 2020
お騒がせしてすみません。
新たにブロック線図を作り直したら、無事実行することができました。
ありがとうございました。
Toshinobu Shintai
Toshinobu Shintai el 16 de Mzo. de 2020
安心しました。こちらこそありがとうございます。

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Community Treasure Hunt

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

Start Hunting!