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

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

 Respuesta aceptada

交感神経優位なあかべぇ
交感神経優位なあかべぇ el 3 de Feb. de 2025

2 votos

こちらはどうでしょうか?
For Iterator ブロックの開始時の状態をリセットに設定し、Delayブロックを使用して前ループの結果を渡します。開始時の状態をリセットに設定しているので、Delayの初期条件は毎ステップ入力値から始まります。

1 comentario

tak
tak el 4 de Feb. de 2025
ありがとうございます。
だいぶスマートになりました。

Iniciar sesión para comentar.

Más respuestas (1)

Atsushi Ueno
Atsushi Ueno el 1 de Feb. de 2025

0 votos

質問の例に挙げられた処理は「Nが4以上ならを出力、Nが1~3なら(何か)を出力」です。
2のN乗は Math Function でOK。その場合、MemoryFor Iterator Subsystem は不要になります。

3 comentarios

tak
tak el 3 de Feb. de 2025
ご回答ありがとうございます。
説明が不足しており申し訳ございません。
実際にはGain(2)の部分が別の複雑なシステムになります。
その別の複雑なシステムの出力結果を次の周の入力とさせて複数回繰り返し処理させたいと考えております。
現状ではswitchを複数個置いて表現していますが作るのも読み取るのもわかりづらいと感じており、もう少しスマートな表現方法はないものかと悩んでおります。
Atsushi Ueno
Atsushi Ueno el 11 de Feb. de 2025
気になる事:
最後のSwitch((1:N)>=4)は、有っても無くても動作に影響しないのではないでしょうか?
For Iterator Subsystem内で繰り返し処理が行われている間の出力は使われず、全ての繰り返し処理が終わった後に始めて出力が使われます。 @交感神経優位なあかべぇ氏の回答からも最後のSwitchは除去されています。
tak
tak el 12 de Feb. de 2025
ありがとうございます。
私も実際にswitchを外してみたところ、結果に変わりがありませんでした。
意図としてはループの最後の結果のみ出力させようとしていました。

Iniciar sesión para comentar.

Categorías

Más información sobre Simulink en Centro de ayuda y File Exchange.

Productos

Etiquetas

Preguntada:

tak
el 30 de En. de 2025

Comentada:

tak
el 12 de Feb. de 2025

Community Treasure Hunt

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

Start Hunting!