Main Content

For Each

For Each Subsystem の制御ブロック

  • For Each block

説明

For Each ブロックは、For Each Subsystem ブロックの制御ブロックとして機能します。具体的には、For Each ブロックを使用することで、入力信号またはマスク パラメーターのいずれかの要素を For Each Subsystem 内のブロックで個別に処理できるようになります。状態をもつこのサブシステム内の各ブロックは、処理対象の各要素またはサブ配列ごとに独立した状態セットを維持します。サブシステム内のブロック セットが要素またはサブ配列を処理するとき、サブシステムは結果を連結して出力信号を形成します。

For Each Subsystem block icon, displayed alongside contents of for-each subsystem

For Each Subsystem を使用して、入力やマスク パラメーターを変更した後に出力を反復計算します。これを行うには、For Each ブロックのダイアログ ボックスで入力信号またはマスク パラメーターの分割を設定します。

入力信号のサブシステムへの分割

各反復に分割する入力信号を For Each Subsystem で指定するには、For Each ブロックのダイアログ ボックスの [入力分割] タブを使用します。分割する信号を指定するときは、[分割次元] パラメーター、[分割幅] パラメーター、[分割オフセット] パラメーターを指定します。

サブシステムのマスク パラメーターの分割

For Each Subsystem ブロックのマスク パラメーターは分割できます。分割は、システムの構造は変えずにパラメーターの値を変えて反復処理する場合に便利です。この場合、パラメーターごとにモデルを変更して追加の入力信号を分割する方法では煩雑になります。代わりに、For Each Subsystem にマスク パラメーターを追加します。詳細については、簡単なマスクの作成を参照してください。分割するマスク パラメーターを選択するには、For Each ブロックのダイアログ ボックスの [パラメーターの分割] タブを使用します。詳細については、以下の分割パラメーターの選択を参照してください。

出力の連結

結果を連結する次元を定義するには、[出力連結] タブで [連結の次元] を指定します。

サブ配列ごとにブロックによって生成された結果は、連結次元に沿って積み上げられます。既定では、次元 1 (y 軸) が使用され、結果が垂直に積み上げられることを意味します。ただし、連結の次元を 2 に指定すると、結果は水平方向 (x 軸) に連結されます。したがって、行ベクトルが処理されると、連結された結果は、最初のケースは行列になり、2 番目のケースは行ベクトルになります。

分割パラメーターの選択

分割する入力信号またはサブシステムのマスク パラメーターを選択するときは、それらを各反復用に要素またはサブ配列に分解する方法を指定しなければなりません。これを行うには、[分割次元] パラメーターと [分割幅][分割オフセット] パラメーターで整数値を設定します。

例として、次の形式の入力信号行列 A について考えてみます。

3-by-3 matrix A with all 9 elements displayed, showing d1 as the vertical dimension and d2 as the horizontal dimension

ラベル d1 と d2 は、それぞれ次元 1 と次元 2 を定義します。分割次元と分割幅の両方に対して既定の設定 1、分割オフセットに 0 が保持されると、Simulink® は分割幅に等しい幅つまり 1 要素分の幅で分割次元 1 に対して直角にスライスします。

3-by-3 matrix A, with all 9 elements showing, partitioned into rows

行列 A は、次の 3 つの行ベクトルに分解されます。

3-by-3 matrix A, decomposed into 3 3-element row vectors

代わりに分割次元 2 を指定すると、Simulink は次元 2 に対して直角にスライスして、次の 3 つの列ベクトルを形成します。

3-by-3 matrix A, decomposed into 3 3-element column vectors

[分割次元]2 に設定する以外に、[分割幅]2 および [分割オフセット]-1 に設定すると、Simulink は 2 つのオーバーラップする 3 行 2 列の分割を処理に使用します。

3-by-3 matrix A, decomposed into 2 overlapping 3-by-2 matrices

既定では、入力信号またはマスク パラメーターのすべての分割が処理されます。分割のサブセットを処理するには、処理する分割数を [反復回数] として入力します。上記の行列の例では、[分割オフセット]0 (既定の設定) に、[反復回数]2 に設定すると、入力行列 A の最初の 2 行または 2 列のみが処理されます。

メモ

Simulink で 1 次元と見なされるのは信号だけです。マスク パラメーターは、方向に応じて行ベクトルか列ベクトルのどちらかになります。行ベクトルを分割するには、分割次元を 2 (列方向) に指定します。列ベクトルを分割するには、分割次元を 1 (行方向) に指定します。

端子

出力

すべて展開する

現在の分割のインデックス (ゼロから始まる)。スカラーとして返されます。

依存関係

この端子を有効にするには、[分割インデックスの出力端子を表示] を選択します。

データ型: int32 | double

パラメーター

すべて展開する

[入力分割] タブ

分割する各入力信号を選択し、対応する [分割次元] パラメーター、[分割幅] パラメーター、および [分割オフセット] パラメーターを指定します。詳細は、Inport ブロックのリファレンス ページを参照してください。

この パラメーター は読み取り専用です。

For Each Subsystem ブロックに接続された入力端子のリスト。

サブ配列または要素に分割する For Each Subsystem ブロックに接続された入力端子信号を選択します。[端子] 列にリストされている端子ごとに、対応するチェック ボックスをオンにしてその信号を分割します。

プログラムでの使用

ブロック パラメーター: InputPartition
: 文字ベクトル
: 'off' | 'on'
既定の設定: 'off'

選択した入力信号配列をスライスする次元を指定します。結果として得られるスライスは、指定する次元と直交します。スライスによって配列がサブ配列または要素に適切に分割されます。

1

入力配列を列に沿ってスライスします。

2

入力配列を行に沿ってスライスします。

n

入力配列を次元 n に沿ってスライスします。

依存関係

このパラメーターを有効にするには、関連する入力端子の [分割] を選択します。

プログラムでの使用

ブロック パラメーター: InputPartitionDimension
: 文字ベクトル
: '1' | '2' | '<positive integer>'
既定の設定: '1'

選択した入力信号の各分割スライスの幅を指定します。

依存関係

このパラメーターを有効にするには、関連する入力端子の [分割] を選択します。

プログラムでの使用

ブロック パラメーター: InputPartitionWidth
: 文字ベクトル
: '1' | '<integer>'
既定の設定: '1'

選択した入力信号の各分割スライスのオフセットを指定します。

0

分割スライス間のオフセットはありません。つまり、分割スライス間にギャップはなく、オーバーラップもしていません。

整数

正の整数を使用してスライス間のギャップを指定するか、負の整数を使用してオーバーラップを示すことで、分割オフセットを指定します。[分割幅][分割オフセット] の合計は正の整数でなければなりません。

たとえば、[分割幅]3 で、[分割オフセット]-2 であると、3 要素のスライスがそれぞれ隣接するスライスと 2 要素分オーバーラップすることを示します。また、[分割幅]2 で、[分割オフセット]1 であると、1 要素の幅のギャップが隣接する 2 要素の幅のスライスのそれぞれのペアの間にあることを示します。

依存関係

このパラメーターを有効にするには、関連する入力端子の [分割] を選択します。

プログラムでの使用

ブロック パラメーター: InputPartitionOffset
: 文字ベクトル
: '0' | '<integer>'
既定の設定: '0'

[パラメーターの分割] タブ

分割する各マスク パラメーターを選択し、対応する [分割次元] パラメーターと [分割幅] パラメーターを指定します。

この パラメーター は読み取り専用です。

For Each Subsystem ブロックのマスク パラメーターのリスト。このリストには、For Each Subsystem ブロックのマスクに編集可能なパラメーターを追加している場合にのみマスク パラメーターが表示されます。Author Block Masksを参照してください。

サブ配列または要素に分割する For Each Subsystem ブロックのマスク パラメーターを選択します。[パラメーター] 列にリストされている端子ごとに、対応するチェック ボックスをオンにしてそのマスク パラメーターを分割します。

プログラムでの使用

ブロック パラメーター: SubsysMaskParameterPartition
: 文字ベクトル
: 'off' | 'on'
既定の設定: 'off'

選択したマスク パラメーター配列をスライスする次元を指定します。結果として得られるスライスは、指定する次元と直交します。スライスによって配列がサブ配列または要素に適切に分割されます。

1

マスク パラメーター配列を列に沿ってスライスします。

2

マスク パラメーター配列を行に沿ってスライスします。

n

マスク パラメーター配列を次元 n に沿ってスライスします。

依存関係

このパラメーターを有効にするには、関連するマスク パラメーターの [分割] を選択します。

プログラムでの使用

ブロック パラメーター: SubsysMaskParameterPartitionDimension
: 文字ベクトル
: '1' | '<integer>'
既定の設定: '1'

選択したマスク パラメーター配列の各分割スライスの幅を指定します。

依存関係

このパラメーターを有効にするには、関連するマスク パラメーターの [分割] を選択します。

プログラムでの使用

ブロック パラメーター: SubsysMaskParameterPartitionWidth
: 文字ベクトル
: '1' | '<positive integer>'
既定の設定: '1'

[出力連結] タブ

各出力端子に対して、For Each Subsystem ブロックの結果を積み上げる (連結する) 次元を指定します。詳細は、Outport ブロックのリファレンス ページを参照してください。

この パラメーター は読み取り専用です。

For Each Subsystem ブロックに接続された出力端子のリスト。

各出力端子に対して、For Each Subsystem ブロックの結果を積み上げる次元を指定します。

1

結果を d1 方向、つまり垂直に積み上げます。ブロックが列ベクトルを生成すると、連結処理によって 1 つの列ベクトルが生成されます。ブロックが行ベクトルを生成すると、連結処理によって 1 つの行列が生成されます。

2

結果を d2 方向、つまり水平に積み上げます。ブロックが行ベクトルを生成すると、連結処理によって 1 つの行ベクトルが生成されます。ブロックが行ベクトルを生成すると、連結処理によって 1 つの行列が生成されます。

n

結果を dn 方向に積み上げます。

プログラムでの使用

ブロック パラメーター: OutputConcatenationDimension
: 文字ベクトル
: '1' | '<integer>'
既定の設定: '1'

その他のパラメーター

分割インデックスの出力端子の表示を制御します。

オフ

出力端子を非表示にします。

オン

ブロックの出力端子を表示します。

プログラムでの使用

ブロック パラメーター: ShowIterationIndex
: 文字ベクトル
: 'off' | 'on'
既定の設定: 'off'

出力端子の分割インデックスのデータ型を指定します。

int32

符号付き 32 ビット整数を選択します。

double

double の実数を選択します。

依存関係

このパラメーターを有効にするには、[分割インデックスの出力端子を表示] を選択します。

プログラムでの使用

ブロック パラメーター: IterationIndexDataType
: 文字ベクトル
: 'int32' | 'double'
既定の設定: 'int32'

データのサブセットを処理するには、処理する入力信号またはマスク パラメーター配列の分割スライスの数を指定するか、-1 を指定してすべてのスライスを処理します。この数字は、使用可能なスライスの合計数を超えてはなりません。

-1

すべてのスライスを処理する

整数

処理するスライス数

たとえば、[反復回数]3 である場合、最初の 3 スライスのみが処理されることを示します。

プログラムでの使用

ブロック パラメーター: SpecifiedNumIters
: 文字ベクトル
: '-1' | '<integer>'
既定の設定: '-1'

拡張機能

バージョン履歴

R2010a で導入