メインコンテンツ

Index Vector

最初の入力の値に基づいてさまざまな入力間での出力の切り替え

  • Index Vector block

ライブラリ:
Simulink / Signal Routing
HDL Coder / Signal Routing

Index Vector ブロックの代替構成:
Multiport Switch

説明

Index Vector ブロックは、0 ベースの制御入力でデータ入力を 1 つ指定した Multiport Switch ブロックの特殊な構成です。ブロックの出力は、インデックスが制御入力と一致する入力ベクトルの要素です。たとえば入力ベクトルが [18 15 17 10] で制御入力が 3 の場合、インデックスが 3 (0 ベース) の要素は 10 であり、その値が出力されます。

Index Vector ブロックと Multiport Switch ブロックは、同じブロックの代替構成です。

  • Index Vector — 最初の入力の値に基づいてさまざまな入力間で出力を切り替える。

  • Multiport Switch — 制御信号に基づいて出力信号を選択する。

Multiport Switch ブロックを Index Vector ブロックとして動作させるよう構成するには、[データ端子数][1] に設定し [データ端子の順序][0 ベースの連続] に設定します。

すべて展開する

この例は、0 ベースと 1 ベースのインデックスでの Index Vector の動作を示しています。

Index Vector ブロックは、Simulink Signal Routing ライブラリのブロックです。これは、Multiport Switch ブロックの特殊な構成です。Multiport Switch ブロックを Index Vector ブロックとして構成するには、[データ端子数]1、および [データ端子の順序] を [Zero-based contiguous] に設定します。

端子

入力

すべて展開する

制御信号。スカラーとして指定します。制御入力が整数値でない場合、ブロックにより、ゼロ方向に丸めることで値が整数になるように切り捨てられます。

列挙型の制御信号の詳細については、Multiport Switch ブロックのリファレンス ページの列挙型制御端子のパラメーターを設定するためのガイドラインを参照してください。

制限

  • 制御信号が数値型の場合は、制御信号は複素数にはできません。

  • 制御信号が列挙型の信号である場合、ブロックは基となる整数値を使用してデータ端子を選択します。

  • 基となる整数がデータ入力に対応していない場合はエラーになります。

データ型: single | double | half | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | fixed point

1 番目のデータ入力。スカラーまたはベクトルとして指定します。[データ端子の順序][0 ベースの連続] に設定されている場合は端子に [0] というラベルが付けられ、[データ端子の順序][1 ベースの連続] に設定されている場合は [1] というラベルが付けられます。

データ型: single | double | half | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | fixed point | bus | enumerated | string

出力

すべて展開する

ブロックは、制御信号の値に従って、入力データ ベクトルから選択した値を出力します。出力はスカラーです。

データ型: single | double | half | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | fixed point | enumerated | bus

パラメーター

すべて展開する

メイン

データ入力端子の順序のタイプを指定します。

  • 0 ベースの連続 — 連続データ端子の順序付けに、ブロックは 0 ベースのインデックスを使用します。これは Index Vector ブロックの既定値です。

  • 1 ベースの連続 — 連続データ端子の順序付けに、ブロックは 1 ベースのインデックスを使用します。これは Multiport Switch ブロックの既定値です。

  • インデックスの指定 — ブロックは、データ端子の順序付けに非連続インデックスを使用します。この値は、2 つ以上の入力データ端子をもつ構成でのみサポートされます。

ヒント

  • 制御端子が列挙型の場合、インデックスの指定 を選択します。

  • [0 ベースの連続] または [1 ベースの連続] を選択する場合は、制御端子が列挙型でないことを確認してください。この構成は廃止されているため、エラーが発生します。使用しているモデルでアップグレード アドバイザーを実行して、この構成の各 Multiport Switch ブロックを、データ端子インデックスを明示的に指定するブロックと置き換えることができます。モデルのアップグレードを参照してください。

  • ブロックにシミュレーションまたはコード生成のための未使用のデータ端子が含まれる状況を回避します。制御端子が固定小数点または組み込みデータ型の場合は、すべてのデータ端子インデックスがそのデータ型で表現されることを確認します。それ以外の場合は、次のようにブロックが動作します。

    ブロックに未使用のデータ端子が含まれ、データ端子の順序が以下の場合ブロックは以下を生成
    [0 ベースの連続] または [1 ベースの連続] 警告
    インデックスの指定 エラー

依存関係

[0 ベースの連続] または [1 ベースの連続] を選択すると、[データ端子数] パラメーターが有効になります。

インデックスの指定 を選択すると、[データ端子インデックス] パラメーターが有効になります。

プログラムでの使用

ブロック パラメーター: DataPortOrder
型: 文字ベクトル
値: 'Zero-based contiguous' | 'One-based contiguous' | 'Specify indices'
既定の設定: 'Zero-based contiguous'

このブロックへのデータ入力端子の数を指定します。

依存関係

このパラメーターを有効にするには、[データ端子の順序][0 ベースの連続] または [1 ベースの連続] に設定します。

プログラムでの使用

ブロック パラメーター: Inputs
型: 文字ベクトル
値: 1 と 65536 の間の整数
既定の設定: '1'

信号属性

このチェック ボックスをオンにした場合、すべてのデータ入力端子が同じデータ型でなければなりません。このチェック ボックスをオフにすると、ブロックのデータ端子入力は異なるデータ型をもつことができます。

プログラムでの使用

ブロック パラメーター: InputSameDT
型: 文字ベクトル
値: 'off' | 'on'
既定: 'off'

ソフトウェアでチェックする出力範囲の下限値。

最小値を使用して以下が行われます。

ヒント

[出力の最小値] により、実際の出力信号が飽和する (またはクリップされる) ことはありません。代わりに、Saturation ブロックを使用してください。

プログラムでの使用

ブロック パラメーターの値をプログラムで設定するには、関数 set_param を使用します。

パラメーター: OutMin
値: '[]' (既定値) | scalar in quotes

ソフトウェアでチェックする出力範囲の上限値。

最大値を使用して以下が行われます。

ヒント

[出力の最大値] により、実際の出力信号が飽和する (またはクリップされる) ことはありません。代わりに、Saturation ブロックを使用してください。

プログラムでの使用

ブロック パラメーターの値をプログラムで設定するには、関数 set_param を使用します。

パラメーター: OutMax
値: '[]' (既定値) | scalar in quotes

出力のデータ型を選択します。型は継承されるか、直接指定されるか、Simulink.NumericType などのデータ型オブジェクトとして表現されます。

継承オプションを選択すると、ブロックは次のように動作します。

  • 継承: 内部ルールによる継承 — Simulink® は、組み込みターゲット ハードウェアのプロパティを考慮しつつ、数値の精度、パフォーマンス、および生成コードのサイズのバランスが取れるように、データ型を選択します。組み込みターゲット ハードウェアの設定を変更すると、内部ルールにより選択されるデータ型が変更される可能性があります。コードの効率と数値の精度が、ソフトウェアにより同時に最適化されるとは限りません。内部ルールが、数値精度またはパフォーマンスに対する要求を満たさない場合は、以下のいずれかを行ってください。

    • 出力データ型を明示的に指定する。

    • fixdt(1,32,16) のように既定のデータ型を明示的に指定し、固定小数点ツールを使用してモデルにデータ型を推奨する。詳細については、fxptdlg (Fixed-Point Designer) を参照してください。

    • 独自の継承ルールを指定するには、[継承: 逆伝播による継承] を使用し、Data Type Propagation ブロックを使用します。このブロックの使い方の例については、Signal Attributes ライブラリの Data Type Propagation Examples ブロックを参照してください。

  • 継承: 逆伝播による継承 — 駆動ブロックのデータ型を使用します。

  • 継承: 最初のデータ入力と同じ — 1 番目のデータ入力端子のデータ型を使用します。

プログラムでの使用

ブロック パラメーター: OutDataTypeStr
: 文字ベクトル
: 'Inherit: Inherit via internal rule | 'Inherit: Inherit via back propagation' | 'Inherit: Same as first input' | 'double' | 'single' | 'half' | 'int8' | 'uint8' | 'int16' | 'uint16' | 'int32' | 'uint32' | 'int64' | 'uint64' | 'fixdt(1,16)' | 'fixdt(1,16,0)' | 'fixdt(1,16,2^0,0)' | 'string' | Simulink.ImageType(480,640,3) | '<data type expression>'
既定の設定: 'Inherit: Inherit via internal rule'

固定小数点ツールや固定小数点アドバイザーによる変更を避けるために、このブロックの出力データ型の設定をロックします。詳細については、[出力データ型の設定をロックする] の使用 (Fixed-Point Designer)を参照してください。

プログラムでの使用

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

次のいずれかの丸めモードを選択します。

正方向

正の無限大方向に正負の値を丸めます。MATLAB® 関数 ceil と等価です。

最も近い偶数方向

最も近い表現可能な値に数値を丸めます。同順位が発生した場合は、最も近い偶数の整数に丸めます。Fixed-Point Designer™ 関数 convergent と等価です。

負方向

負の無限大方向に正負の値を丸めます。MATLAB 関数 floor と等価です。

最も近い正の整数方向

最も近い表現可能な値に数値を丸めます。同順位が発生した場合は、正の無限大方向に丸めます。Fixed-Point Designer 関数 nearest と等価です。

最も近い整数方向

最も近い表現可能な値に数値を丸めます。同順位が発生した場合は、正の数値を正の無限大方向、負の数値を負の無限大方向に丸めます。Fixed-Point Designer 関数 round と等価です。

最も簡潔

下限値への丸めとゼロへの丸めのいずれかを自動的に選択し、できるだけ効率の高い丸めコードを生成します。

ゼロ方向

ゼロ方向に数値を丸めます。MATLAB 関数 fix と等価です。

プログラムでの使用

ブロック パラメーター: RndMeth
: 文字ベクトル
: 'Ceiling' | 'Convergent' | 'Floor' | 'Nearest' | 'Round' | 'Simplest' | 'Zero'
既定の設定: 'Floor'

参考

詳細については、丸めモード (Fixed-Point Designer)を参照してください。

オーバーフローで飽和するかラップするかを指定します。

  • on — オーバーフローは、データ型が表現できる最小値または最大値のいずれかに飽和します。

  • off — オーバーフローは、データ型によって表現される適切な値にラップされます。

たとえば、符号付き 8 ビット整数 int8 で表現できる最大値は 127 です。この最大値を超えるブロックの演算結果により 8 ビット整数のオーバーフローが発生します。

  • このパラメーターがオンになっていると、ブロック出力は 127 で飽和します。同様に、ブロック出力は最小出力値である -128 で飽和します。

  • このパラメーターをオフにすると、オーバーフローを引き起こした値は int8 として解釈され、意図しない結果が引き起こされる可能性があります。たとえば、int8 として表されるブロック結果 130 (バイナリで 1000 0010) は -126 です。

ヒント

  • モデルでオーバーフローが発生する可能性があり、生成コードに飽和保護を明示的に組み込む必要があるときには、このパラメーターをオンにすることを検討してください。

  • 生成コードの効率を最適化する場合には、このパラメーターをオフにすることを検討してください。このパラメーターをオフにすると、ブロックが範囲外の信号を処理する方法を指定しすぎないようにする点でも役立ちます。詳細については、信号範囲のエラーのトラブルシューティングを参照してください。

  • このパラメーターをオンにすると、飽和は出力や結果だけでなく、このブロックの内部演算すべてに適用されます。

  • 通常、オーバーフローが可能ではない場合は、コード生成プロセスで検出されます。この場合、コード ジェネレーターでは飽和コードは生成されません。

プログラムでの使用

ブロック パラメーターの値をプログラムで設定するには、関数 set_param を使用します。

パラメーター: SaturateOnIntegerOverflow
値: 'off' (既定値) | 'on'

異なるサイズの入力信号を許可するには、このチェック ボックスをオンにします。

  • On — 異なるサイズの入力信号が許可され、入力信号サイズが出力信号に伝播されます。このモードでは、ブロックは可変サイズの出力信号を生成します。

  • Off — すべての非スカラー データ入力信号が同じサイズである必要があります。

プログラムでの使用

パラメーター: AllowDiffInputSizes
型: 文字ベクトル
値: 'on' | 'off'
既定の設定: 'off'

ブロックの特性

データ型

Boolean | bus | double | enumerated | fixed point | half | integer | single

直達

はい

多次元信号

はい

可変サイズの信号

はい

ゼロクロッシング検出

いいえ

代替構成

すべて展開する

Multiport Switch ブロックは、出力に渡されるブロックへの入力を決定します。ブロックは、最初の入力の値に基づいてこの決定を行います。最初の入力は制御入力で、残りの入力はデータ入力です。制御入力の値は、どのデータ入力が出力に渡されるかを決定します。

ライブラリ:
Simulink / Signal Routing
HDL Coder / Signal Routing

拡張機能

すべて展開する

C/C++ コード生成
Simulink® Coder™ を使用して C および C++ コードを生成します。

PLC コード生成
Simulink® PLC Coder™ を使用して構造化テキスト コードを生成します。

固定小数点の変換
Fixed-Point Designer™ を使用して固定小数点システムの設計とシミュレーションを行います。

バージョン履歴

R2006a より前に導入