Simulink forループ内の結果を次の周の入力にする方法

12 views (last 30 days)
tak
tak on 30 Jan 2025
Commented: tak on 12 Feb 2025
Simulinkでforループ内の結果を次の周の入力にする方法を考えています。
たとえば下図のようなイメージです。
モデルが複雑でわかりにくくなってしまうのですが、もっと効率の良い、スマートな表現方法はあるでしょうか?
恐れ入りますが、ご教示願います。

Accepted Answer

交感神経優位なあかべぇ
こちらはどうでしょうか?
For Iterator ブロックの開始時の状態をリセットに設定し、Delayブロックを使用して前ループの結果を渡します。開始時の状態をリセットに設定しているので、Delayの初期条件は毎ステップ入力値から始まります。
  1 Comment
tak
tak on 4 Feb 2025
ありがとうございます。
だいぶスマートになりました。

Sign in to comment.

More Answers (1)

Atsushi Ueno
Atsushi Ueno on 1 Feb 2025
質問の例に挙げられた処理は「Nが4以上ならを出力、Nが1~3なら(何か)を出力」です。
2のN乗は Math Function でOK。その場合、MemoryFor Iterator Subsystem は不要になります。
  3 Comments
Atsushi Ueno
Atsushi Ueno on 11 Feb 2025
気になる事:
最後のSwitch((1:N)>=4)は、有っても無くても動作に影響しないのではないでしょうか?
For Iterator Subsystem内で繰り返し処理が行われている間の出力は使われず、全ての繰り返し処理が終わった後に始めて出力が使われます。 @交感神経優位なあかべぇ氏の回答からも最後のSwitchは除去されています。
tak
tak on 12 Feb 2025 at 23:40
ありがとうございます。
私も実際にswitchを外してみたところ、結果に変わりがありませんでした。
意図としてはループの最後の結果のみ出力させようとしていました。

Sign in to comment.

Categories

Find more on ループと条件付きステートメント in Help Center and File Exchange

Products

Community Treasure Hunt

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

Start Hunting!