Selector
ベクトル信号または行列信号、多次元信号からの入力要素を選択

ライブラリ:
Simulink /
Signal Routing
HDL Coder /
Signal Routing
説明
Selector ブロックは、指定されたインデックスに基づいて入力ベクトル、行列、多次元信号の選択された要素を抽出します。抽出された信号は、入力信号とは異なる方法でグループ化できます。
[入力の次元数] パラメーターに入力した値に基づき、インデックス設定の表が表示されます。表の各行は、[入力の次元数] の入力次元に対応します。各次元について、信号に機能させる要素を定義します。ベクトルは 1 次元信号として、行列は 2 次元信号として指定します。Selector ブロックを多次元信号操作用に構成するときは、ブロックのアイコンが変化します。
たとえば、1 ベースのインデックス モードで 6 次元信号を使用します。Selector ブロックのダイアログ ボックスの表は、各次元について 1 行を含むように変更されます。次元を次の表に示すように定義した場合、出力は Y = U(1:end,2:6,[1 3 5],Idx4:Idx4+7,Idx5,Idx6(1):Idx6(2))
です。ここで、Idx4
、Idx5
、および Idx6
は次元 4、5、および 6 のインデックス端子です。詳細については、Selector ブロックを使用した多次元配列からの要素の選択を参照してください。
行 | インデックス オプション | インデックス | 出力サイズ |
---|---|---|---|
1 | すべて選択 | ||
2 | 開始インデックス (ダイアログ) | 2 | 5 |
3 | インデックス ベクトル (ダイアログ) | [1 3 5] | |
4 | 開始インデックス (端子) | 8 | |
5 | インデックス ベクトル (端子) | ||
6 | 最初と最後のインデックス (端子) |
バス配列を Selector ブロックの入力信号として使用できます。バス配列の定義と使用方法の詳細は、非バーチャル バスのバス配列へのグループ化を参照してください。
メモ
Selector ブロックでは入力信号の次元 (次元数) は変更されません。信号の次元を指定の次元に変更する必要がある場合は、Reshape ブロックを使用します。
例
この例では、入力の種類は同じでも、[インデックス オプション] 設定が異なる 2 つの Selector ブロックを示します。
どちらの Selector ブロックも、入力端子に与えられる入力信号から 7 つの値を選択します。Selector1
ブロックの出力信号のサイズは固定ですが、Selector2
ブロックの出力信号のサイズは可変で、コンパイルされた信号の次元は 7 ではなく 10 になっています。
Selector1
ブロックには [インデックス オプション] が [Index vector (port)
] に設定されています。これにより、Constant1
からのインデックス ベクトルが入力として使用されます。入力信号の次元は 7 であるため、Display
ブロックには Constant1
ブロックの 7 つの値が表示されます。Selector2
ブロックには [入力の端子サイズ] パラメーターが Selector2
ブロックへの入力信号のうち最も大きな入力信号のサイズである 10 に設定されています。
Selector2
ブロックは、[インデックス オプション] を [Starting and ending indices (port)
] にも設定しています。入力信号のサイズは 7 ですが、この出力は [入力の端子サイズ] パラメーターのサイズ (10) に設定されます。
この例では、Selector ブロックを使用して多次元配列から要素を選択する方法を示します。この例では、ブロックのさまざまなインデックス オプションを使用して 6 次元配列の要素を選択および抽出します。
モデルを開きます。
mdl = "extractmultidimarray.slx";
open_system(mdl)
ブロックの構成
入力配列 U
は 1 ベースのインデックス モードの 6 次元配列で、次元は 6×6×6×9×7×5 です。モデルの "PreLoadFcn" コールバックを使用して、モデルによって inputSignal
ファイルから入力配列が読み込まれます。以下の選択セマンティクスと各種インデックス オプションを使用して、配列の各次元から要素を選択できます。この例では、入力配列に 1 ベースのインデックス モードが使用されています。したがって、行番号 (表の最初の列) がそのまま入力配列の次元を示します。たとえば、行 1 は入力配列の次元 1 を示し、以降も同様になります。
次元 1 のすべての要素を抽出するには、
Select All
を使用します。次元 2 の 3 番目と 4 番目の要素を抽出するには、
Starting Index (dialog)
を使用します。[インデックス] 列を3
、[出力サイズ] 列を2
に設定します。次元 3 の 1 番目、3 番目、および 5 番目の要素を抽出するには、
Index vector (dialog)
を使用します。[インデックス] 列を [1 3 5
] に設定します。次元 4 の最初の 8 つの要素を抽出するには、
Starting Index (port)
を使用します。端子 に接続された Constant ブロックConst1
から開始インデックス値1
が提供されます。[出力サイズ] 列を8
に設定します。次元 5 の 2 番目、3 番目、および 4 番目の要素を抽出するには、
Index vector (port)
を使用します。端子 に接続された Constant ブロックConst2
からインデックス値 [2:4
] が提供されます。次元 6 から要素の範囲を抽出するには、
Starting and ending indices (port)
を使用します。選択の範囲は 3 番目の要素から 5 番目の要素までです。端子 に接続された Constant ブロックConst3
から範囲 [3 5
] が提供されます。
信号のログ
シミュレーションを実行し、To Workspace ブロックを使用して信号のログを変数 Y
に記録します。
Y = sim(mdl);
拡張例
制限付き可変サイズ信号の基本操作
この例では、制限付き可変サイズ信号を生成する方法を示し、それらの信号を使用したいくつかの操作について説明します。この例では、Selector ブロックと Switch ブロックを使用して可変サイズ信号を生成します。その信号を数学演算、バス作成、バス選択、行列連結、および離散フィルター方程式の実装に使用します。
制限
[インデックス] パラメーターはシミュレーション時には調整できません。次元の [インデックス オプション] を
[インデックス ベクトル (ダイアログ)]
または[開始インデックス (ダイアログ)]
に設定し、ブロック ダイアログ ボックスで対応する [インデックス] に対してSimulink.Parameter
オブジェクトなどのシンボリック値を指定すると、シミュレーションの開始時の瞬時値がシミュレーション全体を通して使用され、パラメーターはインライン化された値として生成されたコードに表示されます。ブロック パラメーター値の調整と試行を参照してください。インデックス端子を使用して選択インデックスを動的に調整できます。
端子
入力
入力信号と出力信号に対する要素のソース
データ型: single
| double
| half
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| Boolean
| fixed point
| enumerated
| bus
| image
対応する出力要素の選択用のインデックスを指定する外部端子。
カスタム幅の整数 (15 ビット整数や 23 ビット整数など) をインデックス信号の値として指定できます。整数の幅を構成するときは、[モード] を [固定小数点]
として指定し、[語長] を 65,535 以下、[傾き] を 1、[バイアス] を 0 にする必要があります。固定小数点データ型の指定の詳細については、データ型アシスタントを利用したデータ型の指定を参照してください。
依存関係
外部のインデックス端子を有効にするには、[インデックス オプション] 表の対応する行の [インデックス オプション] を [インデックス ベクトル (端子)]
、[開始インデックス (端子)]
、または [最初と最後のインデックス (端子)]
に設定します。
データ型: single
| double
| int8
| int16
| int32
| uint8
| uint16
| uint32
出力
入力信号の選択されたまたは記録された要素から生成された出力信号。
データ型: single
| double
| half
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| Boolean
| fixed point
| enumerated
| bus
| image
パラメーター
入力信号の次元数を指定します。
プログラムでの使用
ブロック パラメーター: NumberOfDimensions
|
型: 文字ベクトル |
値: integer
|
既定の設定: '1'
|
インデックス モードを指定します。[One-based
] を選択した場合、インデックス 1 は入力ベクトルの最初の要素を指定します。[Zero-based
] を選択した場合、インデックス 0 は入力ベクトルの最初の要素を指定します。
プログラムでの使用
ブロック パラメーター: IndexMode
|
型: 文字ベクトル |
値: 'One-based' | 'Zero-based'
|
既定の設定: 'One-based'
|
次元単位で信号の要素のインデックス付けの方法を定義します。リストから以下を選択します。
すべて選択
その他のコンフィギュレーションは必要ありません。すべての要素が選択されます。
インデックス ベクトル (ダイアログ)
[インデックス] 列が有効になります。要素のインデックス ベクトルを入力します。
インデックス ベクトル (端子)
その他のコンフィギュレーションは必要ありません。
開始インデックス (ダイアログ)
[インデックス] および [出力サイズ] 列が有効になります。選択した要素の範囲の開始インデックスを [インデックス] 列に、選択した要素数を [出力サイズ] 列に入力します。
開始インデックス (端子)
[出力サイズ] 列が利用可能になります。選択した要素数を [出力サイズ] 列に入力します。
最初と最後のインデックス (端子)
その他のコンフィギュレーションは必要ありません。
このオプションを使用すると、可変サイズの信号が出力されます。更新すると、出力信号の次元が入力信号の次元と等しくなるように設定されます。実行中、インデックスを与える信号にもとづいて出力の次元が更新されます。
出力信号データのログを記録すると、選択されていない信号が NaN 値でパディングされます。
[インデックス] 列と [出力サイズ] 列は、必要に応じて表示されます。
プログラムでの使用
ブロック パラメーター: IndexOptionArray
|
型: 文字ベクトルの cell 配列 |
値: {'Select all'} | {'Index vector (dialog)'} | {'Index vector (port)'} | {'Starting index (dialog)'} | {'Starting index (port)'} | {'Starting and ending indices (port)'} |
既定の設定: {'Index vector (dialog)'}
|
文字ベクトルの cell 配列ではなく文字ベクトルの場合は、IndexOptions
を使用します。
[インデックス オプション] が [インデックス ベクトル (ダイアログ)]
の場合は、対象となる各要素のインデックスを入力します。
[インデックス オプション] が [開始インデックス (ダイアログ)]
の場合は、選択する要素の範囲の開始インデックスを入力します。
プログラムでの使用
ブロック パラメーター: IndexParamArray
|
型: 文字ベクトルの cell 配列 |
値: 整数 |
既定の設定: {'[1 3]'}
|
文字ベクトルの cell 配列ではなく文字ベクトルの場合は、Indices
を使用します。
ブロックの出力信号の幅を指定します。
プログラムでの使用
ブロック パラメーター: OutputSizeArray
|
型: 文字ベクトルの cell 配列 |
値: 整数 |
既定の設定: {'1'}
|
文字ベクトルの cell 配列ではなく文字ベクトルの場合は、OutputSizes
を使用します。
1 次元信号のブロックの入力信号の幅を指定します。駆動ブロックから継承するには「-1
」を入力します。
プログラムでの使用
ブロック パラメーター: InputPortWidth
|
型: 文字ベクトル |
値: integer
|
既定の設定: '3'
|
サンプルの時間間隔を指定します。サンプル時間を継承するには、このパラメーターを -1
に設定します。詳細については、サンプル時間の指定を参照してください。
依存関係
このパラメーターは、-1
以外の値に設定した場合にのみ表示されます。詳細は、サンプル時間が推奨されないブロックを参照してください。
プログラムでの使用
ブロック パラメーターの値をプログラムで設定するには、関数 set_param
を使用します。
パラメーター: | SampleTime |
値: | "-1" (既定値) | scalar or vector in quotes |
アクセラレータ モードまたはラピッド アクセラレータ モードでのシミュレーション時に、いずれかのインデックス値が入力信号の関連する次元に対して有効なインデックスの範囲外にあるかどうかを Simulink® でチェックするには、このチェック ボックスをオンにします。インデックスが範囲外の場合、Simulink はシミュレーションを停止し、エラー メッセージを表示します。
メモ
このチェック ボックスをオンにしない場合、範囲外のインデックス値によって、アクセラレータ モードまたはラピッド アクセラレータ モードのシミュレーション時に未定義の動作が発生する可能性があります。
Simulink はこのチェック ボックスをオンにするかどうかに関係なく、ノーマル モードのシミュレーション時にこのチェックを実行します。
プログラムでの使用
パラメーター: RuntimeRangeChecks
|
型: 文字ベクトル |
値: 'Off' | 'On' |
既定の設定: 'Off'
|
ブロックの特性
データ型 |
|
直達 |
|
多次元信号 |
|
可変サイズの信号 |
|
ゼロクロッシング検出 |
|
拡張機能
C/C++ コード生成
Simulink® Coder™ を使用して C および C++ コードを生成します。
HDL Coder™ には、HDL の実装および合成されたロジックに影響する追加のコンフィギュレーション オプションがあります。
このブロックには 1 つの既定の HDL アーキテクチャがあります。
一般 | |
---|---|
ConstrainedOutputPipeline | 既存の遅延を設計内で移動することによって出力に配置するレジスタの数。分散型パイプラインではこれらのレジスタは再分散されません。既定の設定は |
InputPipeline | 生成されたコードに挿入する入力パイプライン ステージ数。分散型パイプラインと制約付き出力パイプラインでは、これらのレジスタを移動できます。既定の設定は |
OutputPipeline | 生成されたコードに挿入する出力パイプライン ステージ数。分散型パイプラインと制約付き出力パイプラインでは、これらのレジスタを移動できます。既定の設定は |
ネイティブ浮動小数点 | |
---|---|
LatencyStrategy | 浮動小数点演算子について、設計内のブロックを |
ブロックは、HDL コード生成で次のデータ型をサポートします。
入力端子 | 次元 | 固定小数点 | 浮動小数点 | 組み込み整数 | バス | boolean | 列挙型 | 複素信号 |
---|---|---|---|---|---|---|---|---|
Port1 | スカラー ベクトル 行列 (2 次元まで) | あり | half single double | なし | あり | あり | あり | あり |
このブロックは、速度と面積を最適化するために次の HDL 最適化に使用されます。
面積の最適化
速度の最適化
最適化 | 説明 |
---|---|
分散型パイプライン方式 (HDL Coder) | "分散型パイプライン方式"、つまりレジスタのリタイミングとは、設計の既存の遅延を移動して、機能的動作を維持しながらクリティカル パスを低減する速度の最適化です。 |
クロックレート パイプライン (HDL Coder) | "クロックレート パイプライン" は、他の速度と面積の最適化でクロック レートでのレイテンシを導入できるようにする HDL Coder の最適化フレームワークです。 |
適応パイプライン (HDL Coder) | "適応パイプライン" 最適化では、設計内のブロックにパイプライン レジスタを挿入して、ブロックとレジスタのパターンまたは組み合わせを作成することにより、達成可能なクロック周波数を高め、FPGA ボード上の使用面積を削減できます。 |
PLC コード生成
Simulink® PLC Coder™ を使用して構造化テキスト コードを生成します。
固定小数点の変換
Fixed-Point Designer™ を使用して固定小数点システムの設計とシミュレーションを行います。
バージョン履歴
R2006a より前に導入R2023a 以降では、Selector ブロックにインデックス信号の値を指定するために使用する整数の幅をカスタマイズできます。
R2023a 以降では、1 次元の可変サイズの入力信号を受け入れるように構成された Selector ブロックで、[インデックス オプション] として [インデックス ベクトル (ダイアログ)]
と [開始インデックス (ダイアログ)]
がサポートされます。
この強化により、1 次元の可変サイズの入力信号を受け入れるように Selector ブロックを構成するときに、使用可能なすべての [インデックス オプション] の設定から選択できるようになります。
参考
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)