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

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

 采纳的回答

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

4 个评论

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

请先登录,再进行评论。

更多回答(0 个)

类别

帮助中心File Exchange 中查找有关 Simulink Function 的更多信息

Community Treasure Hunt

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

Start Hunting!