Multiport SwitchとSwitch Caseは、Simulinkモデルにおいてどちらも条件分岐に使用されますが、その根本的な役割(信号の選択か、処理の実行制御か)が大きく異なります。
Multiport SwitchとSwitch Caseの主な違い
最も大きな違いは、「計算済みの信号を切り替える(Multiport Switch)」か、「特定のサブシステムの実行自体を制御する(Switch Case)」かという点にあります。
以下に各々のブロックについて詳細をまとめます。
Multiport Switch:
役割: 制御入力に基づいて、複数のデータ入力信号の中から1つを選択して出力に渡す「信号ルーティング」ブロックです
このブロック自体は単に信号を選択するだけなので、入力端子に接続されている信号の計算(上流のブロックの処理)は、その信号が選択されているかどうかにかかわらず、通常はシミュレーションのステップごとに実行されます。そのため、重い計算を複数並べてMultiport Switchで切り替える構成にすると、すべての計算が常に走ることになり、処理が遅くなる可能性があります。
メリット:
・レイヤーが深くならず、モデルがシンプルになる。
・固定小数点やBooleanなど多様なデータ型が使える。
デメリット:
・スイッチの前にすべての入力信号が計算されるため、複雑な計算を切り替える場合は無駄が生じる可能性がある。
Switch Case:
役割: Switch Case Action Subsystemと組み合わせて、サブシステムの実行自体を制御します(switch文のようなロジック)
Switch Case Action Subsystemを使用すると、条件に合致したサブシステムのみが実行されます。合致しないケースの処理は実行されないため、計算リソースを節約でき、処理速度の面で有利になります。
メリット:
・実行制御が可能なため、選択されていないケースのサブシステムは実行されず、計算負荷を抑えられる。
・標準的なCのswitch文に近い構造を持つ。
デメリット:
・Action Subsystemが必要なため、モデルの階層(レイヤー)が深くなる。