Main Content

For Each Subsystem を使用した同等のダイナミクスをもつオブジェクトのモデル化

この例では、同等のダイナミクスをもつ複数のオブジェクトを For Each Subsystem を使用してモデル化する方法を示します。オブジェクトの数は、入力信号の長さでパラメーター化されます。

この例は、モデル sldemo_metro_basic を実装する方法を示します。この方法では、1 つの For Each Subsystem で 3 つの同等のメトロノームをモデル化し、別の For Each Subsystem で各メトロノームの動作が移動ベースに与える同等の効果をモデル化します。

sldemo_metro_basic の 3 つの同等のメトロノームの連続ダイナミクスは、sldemo_metro_basic/Metronome1sldemo_metro_basic/Metronome2sldemo_metro_basic/Metronome3 という同等のサブシステムでモデル化されます。これら 3 つのサブシステムは、1 つの For Each Subsystem として表すことができます。メトロノームの初期位置は、マスク パラメーターとして For Each Subsystem に渡され、1 つの積分器の初期条件として使用されます。For Each Subsystem は、このパラメーターを最初の次元に沿って分割するように設定されています。その結果、3 つの要素をもつ入力ベクトルによって 3 つのメトロノームの初期位置が定義されます。

図 1: 同等のダイナミクスをもつ 3 つのサブシステムを使用してモデル化したメトロノーム

図 2: 1 つの For Each Subsystem を使用してモデル化したメトロノーム

移動ベースのダイナミクスを調べる際は、各メトロノームに対応する 3 つの同等の 2 次微分項が関与していることに注意してください。これら 3 つのコピーは、1 つの For Each Subsystem で置き換えることができます。9 つの入力信号の代わりに、For Each Subsystem では、すべてのメトロノームに対して 3 つの入力信号 (角変位、角速度、角加速度) しか必要ありません。For Each Subsystem は、入力信号を最初の次元に沿って分割するように設定されており、1 回の反復 (つまり、1 つのメトロノーム) で各信号からの 1 つの要素を操作します。

図 3: 同じサブシステムのコピーを使用してモデル化した 2 次微分項

図 4: 1 つの For Each Subsystem を使用してモデル化した 2 次微分項

最初のモデルを 2 つの For Each Subsystem で実装した後に、メトロノームの数を反映するようにモデルをパラメーター化します。メトロノームの数を増やすには、マスク パラメーターに新しい値を導入します。

以下に例を示します。

Theta4 = 0.7568;

Metronome_i ブロックをダブルクリックして、マスク ダイアログを開き、Input Positions (Partitioned) を [Theta1 Theta2 Theta3 Theta4] に変更します。

モデルを実行して、4 つのメトロノームの変位角度と移動ベースの位置を確認します。

sim('sldemo_metro_foreach');

図 5: 4 つのメトロノーム用にパラメーター化した For Each Subsystem のシミュレーション アニメーション

図 6: 4 つのメトロノーム用にパラメーター化した For Each Subsystem のシミュレーション結果