Main Content

Interpolation Using Prelookup

あらかじめ計算されたインデックスと小数部の値を使用して、n 次元関数の近似を加速する

  • Interpolation Using Prelookup block

ライブラリ:
Simulink / Lookup Tables

説明

Interpolation Using Prelookup ブロックは、Prelookup ブロックと共に使用するのが最も効率的です。PreLookup ブロックは、その入力値 u がブレークポイント データセットとどのように関連するかを指定するインデックスと区間の小数部を計算します。n 次元 table を内挿するために、結果のインデックスと割合の値を Interpolation Using Prelookup ブロックに入力します。これらの 2 つのブロックには分散アルゴリズムがあります。それらを組み合わせることで、n-D Lookup Table ブロックの統合アルゴリズムと同じ処理になります。ただし、Prelookup ブロックと Interpolation Using Prelookup ブロックを使用すると、シミュレーションとコード生成の効率を上げることができる場合があります。詳細については、処理効率を参照してください。

サポートされているブロック演算

Interpolation Using Prelookup ブロックを使用するには、ダイアログ ボックス上で一連のテーブル データ値を直接指定するか、[T] 入力端子に値を入力します。通常は、これらの表の値は Prelookup ブロックで指定されたブレーク ポイント データセットに相当します。Interpolation Using Prelookup ブロックは、Prelookup ブロックから取得するインデックスおよび区間の小数部の値に基づき表の値を検索または推定し、出力を生成します。インデックスと区間の小数部のラベルは、Interpolation Using Prelookup ブロック アイコンでは k および f として表示されます。

インデックスおよび区間の小数部の入力Interpolation Using Prelookup ブロック
ブレークポイント データセットのインデックスの値にマッピングされる場合行と列、および高次元のブレークポイントの交差部の表の値を出力します。
ブレークポイント データセットのインデックスの値にはマッピングされないが範囲内の場合選択した [内挿法] を使用して適切なテーブルの値を内挿します。
ブレークポイント データセットのインデックスの値にはマッピングされず範囲外の場合選択した [外挿法] を使用して出力値を外挿します。

テーブル データのサブセットの内挿法

[サブテーブル選択次元数] パラメーターを使用すると、そのテーブル データのサブセットにおいてのみ内挿されるように指定できます。この内挿モードをアクティブにするには、このパラメーターを正の整数に設定します。既定の列優先のアルゴリズムでは、この値によってテーブル データの最高次元から始めて、選択する次元数が定義されます。したがって、値は テーブルの次元数 以下でなければなりません。

行優先のアルゴリズムでは、内挿はテーブル データの最初または最も低い次元から始まります。

非ゼロの値の場合、[数学とデータ型][行優先の配列レイアウトに最適化されたアルゴリズムを使用] コンフィギュレーション パラメーターを選択すると、サブテーブルの選択動作が行優先のレイアウトに最適化されます。

Interpolation Using Prelookup ブロックに 3 次元のテーブル データがあるとします。次の動作は列優先のアルゴリズムに適用されます。

選択次元数ブロックの動作ブロックの外観
0テーブル全体を内挿し、サブテーブル選択をアクティブにしません。変更されません。
1最初の 2 つの次元を内挿し、3 番目の次元を選択します。 2 次元テーブルの選択と内挿に使用するラベル s3 の付いた入力端子を表示します。
2最初の次元を内挿し、2 番目と 3 番目の次元を選択します。 1 次元テーブルの選択と内挿に使用するラベル s2s3 の付いた 2 つの入力端子を表示します。

サブテーブル選択では、0 ベースのインデックス指定を使用します。テーブル データのサブセットを内挿する例は、Prelookup ブロックと Interpolation ブロックの使用を参照してください。

サブテーブル選択を使用しない 2 次元または n 次元内挿の場合、列優先および行優先のアルゴリズムは出力計算の順序が異なる場合があり、数値結果がわずかに異なる原因となります。

端子

入力

すべて展開する

0 ベースのインデックス k。テーブルの 1 番目の次元に対する入力 u を含む区間を指定します。

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

小数部 f は、テーブルの 1 番目の次元に対する区間 k 上の入力の正規化された位置を表します。

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

0 ベースのインデックス k。テーブルの n 番目の次元に対する入力 u を含む区間を指定します。

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

小数部 f は、テーブルの n 番目の次元に対する区間 k 上の入力の正規化された位置を表します。

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

kf1 端子への入力には、バス オブジェクトとして指定されたインデックス k と小数部 f が含まれます。

依存関係

この端子を有効にするには、[インデックスと小数部をバスにする] チェック ボックスをオンにします。

利用可能な kf 入力端子数は、[次元数] パラメーターと [サブテーブル選択次元数] パラメーターの値に依存します。

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

kfn 端子への入力には、バス オブジェクトとして指定された入力の n 番目の次元に対するインデックス k と小数部 f が含まれます。

依存関係

この端子を有効にするには、[インデックスと小数部をバスにする] チェック ボックスをオンにします。

利用可能な [kf] 入力端子数は、[次元数] パラメーターと [サブテーブル選択次元数] パラメーターの値に依存します。

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

列優先のアルゴリズムでは、ブロックは sm、sm+1、... sn 端子への入力を使用して選択とサブテーブル内での内挿を実行します。m は、テーブルの m 番目の次元にマッピングされます。n は [次元数] に等しくなります。

行優先のアルゴリズムでは、ブロックは s1、s2、... sm 端子への入力を使用して選択とサブテーブル内での内挿を実行します。m は、テーブルの m 番目の次元にマッピングされます。m は [サブテーブル選択次元数] に等しくなります。

依存関係

この端子を有効にするには、[サブテーブル選択次元数][次元数] 以下の正の整数でなければなりません。

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

端子 [T] への入力として提供されるテーブル データ値。通常、これらのテーブル値は Prelookup ブロックで指定されたブレークポイント データセットに相当します。Interpolation Using Prelookup ブロックは、Prelookup ブロックから取得するインデックス (k) および区間の小数部 (f) の値に基づきテーブルの値を検索または推定し、出力を生成します。

依存関係

この端子を有効にするには、[ソース][入力端子] に設定します。

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

出力

すべて展開する

N 次元関数の近似。入力インデックス k および小数部 f からの値を使用して、テーブル データを内挿 (または外挿) することによって計算されます。

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

パラメーター

すべて展開する

メイン

テーブル データ

テーブル データがもたなければならない次元の数を指定します。[次元数] はテーブルの独立変数の数を定義します。

指定する内容方法

1、2、3、または 4

ドロップダウン リストから値を選択します。

大きいテーブルの次元

フィールドに正の整数を直接入力します。

このブロックがサポートするテーブルの最大の次元数は 30 です。

プログラムでの使用

ブロック パラメーター: NumberOfTableDimensions
型: 文字ベクトル
値: '1' | '2' | '3' |'4' | ... | '30'
既定の設定: '2'

このチェック ボックスをオンにして、インデックス入力と小数部の入力をバスで結合します。

Prelookup ブロックを有効にして Interpolation Using Prelookup ブロックへの入力を指定するには、以下を設定します。

  • [出力の選択][バスとしてのインデックスと小数部] に設定

  • [出力][Bus: <object name>] に設定。<object name> はモデルにアクセスできる有効なバス オブジェクト名でなければなりません。

このチェック ボックスの設定にかかわらず、選択端子は常に非バス モードで動作します。

プログラムでの使用

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

テーブル データを直接入力するか、ルックアップ テーブル オブジェクトを使用するかを指定します。以下はこのパラメーターの各設定です。

  • [明示的な値][ソース] および [値] パラメーターがダイアログ ボックスに表示されます。

  • [ルックアップ テーブル オブジェクト][名前] パラメーターがダイアログ ボックスに表示されます。

プログラムでの使用

ブロック パラメーター: TableSpecification
型: 文字ベクトル
値: 'Explicit values' | 'Lookup table object'
既定の設定: 'Explicit values'

ダイアログ ボックスに table データを入力するか、入力端子からデータを継承するかを指定します。以下は [ソース] の各設定です。

  • [ダイアログ][値] の下のテキスト ボックスにテーブル データを入力

  • [入力端子]。上流信号がテーブル データをテーブル入力端子に指定することを確認

依存関係

このパラメーターを有効にするには、[指定][明示的な値] に設定します。

プログラムでの使用

ブロック パラメーター: TableSource
型: 文字ベクトル
値: 'Dialog' | 'Input port'
既定の設定: 'Dialog'

テーブル データを N 次元配列として指定します。ここで N は、[次元数] パラメーターの値です。空の行列 ([]) を入力するか、未定義のワークスペース変数を [値] 編集フィールドに入力して、適切な次元の行列を指定せずにブロック線図を編集できます。MATLAB® で多次元配列を作成する方法の詳細については、多次元配列を参照してください。

[ソース][入力端子] に設定する場合、上流信号がテーブル データを [T] 入力端子に提供することを確認します。テーブル データのサイズは [テーブルの次元数] の値に一致していなければなりません。このオプションの場合、ブロックは [T] 入力端子からテーブル属性を継承します。

ルックアップ テーブル エディターを使用してルックアップ テーブルを編集するには、[編集] をクリックします (Edit Lookup Tablesを参照)。

依存関係

このパラメーターを有効にして、ダイアロブ ボックスで明示的にテーブル値を指定するには、[指定][明示的な値][ソース][ダイアログ] に設定しなければなりません。

プログラムでの使用

ブロック パラメーター: Table
型: 文字ベクトル
値: scalar, vector, matrix, or N-D array
既定の設定: 'sqrt([1:11]' * [1:11])'

Simulink.LookupTable オブジェクトの名前を指定します。ルックアップ テーブル オブジェクトは、Simulink® ブレークポイント オブジェクトを参照します。Simulink.LookupTable オブジェクトがない場合は、アクション ボタン をクリックして [作成] を選択します。新しいルックアップ テーブル オブジェクトの対応するパラメーターにブロック情報が自動的に入力されます。

依存関係

このパラメーターを有効にするには、[指定][ルックアップ テーブル オブジェクト] に設定します。

プログラムでの使用

ブロック パラメーター: LookupTableObject
型: 文字ベクトル
値: Simulink.LookupTable object
既定の設定: ''
アルゴリズム

テーブル データの内挿にブロックが使用するメソッドを指定します。Linear point-slopeFlatNearest、または Linear Lagrange を選択できます。詳細については、内挿法を参照してください。

プログラムでの使用

ブロック パラメーター: InterpMethod
型: 文字ベクトル
値: 'Flat' | 'Linear point-slope' | 'Nearest' | 'Linear Lagrange'
既定の設定: 'Linear point-slope'

ブレークポイント データセットの範囲に入っていないすべての入力に対する値の外挿にブロックで使用する方法を指定します。[クリップ] または [線形] を選択できます。詳細については、外挿法を参照してください。

外挿法が [線形] の場合、外挿値は選択された線形内挿法に基づいて計算されます。たとえば、内挿法が線形ラグランジュの場合、外挿法は線形ラグランジュ方程式を継承して外挿された値を計算します。

Prelookup ブロックと Interpolation Using Prelookup ブロックを使用して n-D Lookup Table ブロックの動作を複製するには、Prelookup ブロックと Interpolation Using Prelookup ブロックの両方の [外挿法] を、n-D Lookup Table ブロックのみを使用している場合と同じ設定にする必要があります。たとえば、[外挿法][線形] に設定した n-D Lookup Table ブロックと同じ動作を得るには、Prelookup ブロックと Interpolation Using Prelookup ブロックの両方で [外挿法][線形] に設定します。

依存関係

[外挿法] パラメーターを有効にするには、[内挿法][線形] に設定します。

Interpolation Using Prelookup ブロックは、その入力または出力信号が整数または固定小数点データ型を指定するとき、[線形] 外挿をサポートしません。

プログラムでの使用

ブロック パラメーター: ExtrapMethod
型: 文字ベクトル
値: 'Clip' | 'Linear'
既定の設定: 'Linear'

インデックス (k) および区間の小数部 (f) のブロック入力が、n 次元のテーブル データの最後の要素にアクセスする方法を指定します。インデックス値はゼロベースです。

このチェック ボックスは、入力インデックスがその次元のテーブルの最後のインデックス以上の場合に関連します。丸めのため、このチェック ボックスをオンにしてオフに戻すと、最後のインデックスについて、シミュレーションとコード生成との間で異なる結果となる可能性があります。

チェック ボックスブロックの動作

on

次の場合に次元の最後の要素の値を返します。

  • k は、対応する次元の最後のテーブル要素にインデックスを付けます。

  • f は次のようになります。 0

off

次の場合に次元の最後の要素の値を返します。

  • k は、対応する次元の最後から 2 番目のテーブル要素にインデックスを付けます。

  • f は次のようになります。 1

依存関係

このチェック ボックスは、以下の場合にのみ表示されます。

  • [内挿法][線形の点と勾配] または [線形ラグランジュ] の場合

  • [外挿法][クリップ] の場合

ヒント

Interpolation Using Prelookup ブロックで [インデックスの入力を最後のインデックスに達するようにする] を選択した場合は、それに信号を送り込むすべての Prelookup ブロックでも [上限またはそれを超える入力に対して最後のブレークポイントを使用する] を選択しなければなりません。これにより、ブロックはブレークポイントとテーブル データのセットの最後の要素にアクセスするとき、同じインデックス付けの規則を使用できます。

プログラムでの使用

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

入力が範囲外の場合に警告を表示するかエラーを表示するかを指定します。オプションは次のとおりです。

  • なし — 応答しません。

  • 警告 — 警告が表示され、シミュレーションは続行されます。

  • エラー — シミュレーションを終了し、エラーを表示します。

プログラムでの使用

ブロック パラメーター: DiagnosticForOutOfRangeInput
型: 文字ベクトル
値: 'None' | 'Warning' | 'Error'
既定の設定: 'None'

このブロックで出力の計算に使用するサブテーブルの次元数を指定します。以下のルールに従います。

  • サブテーブル選択を有効にするには、正の整数を入力します。

    この整数は テーブルの次元数 以下でなければなりません。

  • サブテーブル選択を無効にするには、0 を入力して、テーブル全体を内挿します。

非ゼロの値の場合、[数学とデータ型][行優先の配列レイアウトに最適化されたアルゴリズムを使用] コンフィギュレーション パラメーターを選択すると、サブテーブルの選択動作が行優先のレイアウトに最適化されます。

詳細については、テーブル データのサブセットの内挿法を参照してください。

プログラムでの使用

ブロック パラメーター: NumSelectionDims
型: 文字ベクトル
値: '0' | '1' | '2' | '3' | '4' | ... | Number of table dimensions
既定の設定: '0'
コード生成
チェック ボックス結果使用時

on

生成コードには範囲外のインデックス入力をチェックするための条件文が含まれません。

入力 k または f が範囲外の場合、生成されたコードに未定義の動作が発生する可能性があります。

コード効率の場合

off

生成コードには範囲外のインデックス入力をチェックするための条件文が含まれます。

セーフティ クリティカルなアプリケーションの場合

入力が範囲外でない場合、[生成コードの範囲外インデックスに対する保護を削除する] チェック ボックスをオンにしてコードの効率性を高めることができます。既定の設定では、このチェック ボックスはオフです。セーフティ クリティカルなアプリケーションの場合、このチェック ボックスをオンにしないでください。[生成コードの範囲外インデックスに対する保護を削除する] チェック ボックスをオンにする場合は、最初にモデルの入力が範囲内であることを確認します。次に例を示します。

  1. [生成コードの範囲外インデックスに対する保護を削除する] チェック ボックスをオフにします。

  2. [範囲外入力の診断] パラメーターを [エラー] に設定します。

  3. ノーマル モードでモデルのシミュレーションを実行します。

  4. 範囲外エラーがある場合は、範囲内に修正してシミュレーションをもう一度実行します。

  5. シミュレーションによって範囲外の入力エラーが発生しなくなったら、[生成コードの範囲外インデックスに対する保護を削除する] チェック ボックスをオンにします。

    メモ

    [生成コードの範囲外インデックスに対する保護を削除する] チェック ボックスをオンにした際に入力 k または f が範囲外の場合、生成されたコードの動作は未定義となります。

アプリケーションによって、次のモデル アドバイザー チェックを実行して、このチェック ボックスが使用されていることを確認できます。

  • [製品別][Embedded Coder][計算量が多い範囲外のチェック コードを生成する Lookup Table ブロックを識別します]

  • [製品別][Simulink Check][モデリング標準][DO-178C/DO-331 チェック][Lookup Table ブロックの使用をチェックします]

モデル アドバイザーの詳細については、モデル アドバイザー チェックの実行を参照してください。

また、このチェック ボックスをオンにしても安全かどうかを判断するには、Simulink Design Verifier™ ライセンスがある場合、ブロック入力範囲違反の検出 (Simulink Design Verifier)チェックを使用することを検討してください。

以下のいずれかが当てはまる場合、このチェック ボックスは生成コードに影響しません。

  • Prelookup ブロックが Interpolation Using Prelookup ブロックにインデックス値を送り込む場合。

    Prelookup ブロックのインデックス値は常に有効なので、チェック コードは必要ありません。

  • 入力 k のデータ型により、データが有効なインデックス値に制限される場合。

    たとえば、符号なしの整数データ型では、非負のインデックス値が保証されます。したがって、k が符号なしの入力の場合、負値のチェック コードは必要ありません。

プログラムでの使用

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

サンプルの時間間隔を指定します。サンプル時間を継承するには、このパラメーターを -1 に設定します。詳細については、サンプル時間の指定を参照してください。

依存関係

このパラメーターは、-1 以外の値に設定した場合にのみ表示されます。詳細は、サンプル時間が推奨されないブロックを参照してください。

プログラムでの使用

ブロック パラメーター: SampleTime
型: string スカラーまたは文字ベクトル
既定の設定: "-1"

データ型

テーブル データ型を指定します。以下を指定可能です。

  • データ型継承ルール (例: [継承: 出力と同じ])

  • 組み込みデータ型名 (例: single)

  • データ型オブジェクト名 (例: Simulink.NumericType オブジェクト)

  • データ型を評価する式 (例: fixdt(1,16,0))

[データ型アシスタントを表示] ボタン をクリックして、table データ型の設定に役立つ [データ型アシスタント] を表示します。

ヒント

以下の場合には、出力データ型とは異なるテーブル データ型を指定します。

  • 出力信号よりも小さいタイプを使用するテーブル データの保存のためのメモリ必要量が少ない場合

  • 異なる出力データ型の 2 つの Interpolation Using Prelookup ブロック間で事前スケーリングされたテーブル データを共有する場合

  • 異なる出力データ型のブロックに対して Simulink Coder™ で生成コード内のカスタム ストレージ テーブル データを共有する場合

プログラムでの使用

ブロック パラメーター: TableDataTypeStr
型: 文字ベクトル
値: 'Inherit: Inherit from table data' | 'Inherit: Same as output' | 'double' | 'single' | 'int8' | 'uint8' | 'int16' | 'uint16' | 'int32' | 'uint32' | 'int64' | 'uint64' | 'fixdt(1,16)' | 'fixdt(1,16,0)' | 'fixdt(1,16,2^0,0)' | '<data type expression>'
既定の設定: 'Inherit: Same as input'

テーブル データの最小値を有限で実数の double のスカラーとして指定します。既定値は [] (指定なし) です。

プログラムでの使用

ブロック パラメーター: TableMin
型: 文字ベクトル
値: スカラー
既定の設定: '[]'

テーブル データの最大値を有限で実数の double のスカラーとして指定します。既定値は [] (指定なし) です。

プログラムでの使用

ブロック パラメーター: TableMax
型: 文字ベクトル
値: スカラー
既定の設定: '[]'

中間結果のデータ型を指定します。以下を指定可能です。

  • データ型継承ルール (例: [継承: 出力と同じ])

  • 組み込みデータ型名 (例: single)

  • データ型オブジェクト名 (例: Simulink.NumericType オブジェクト)

  • データ型を評価する式 (例: fixdt(1,16,0))

データ属性の設定には [データ型アシスタント] が役立ちます。[データ型アシスタント] を使用するには、the Show data type assistant button をクリックします。詳細については、データ型アシスタントを利用したデータ型の指定を参照してください。

ヒント

このパラメーターを使用して、内部計算に対してテーブル データや出力データよりも高い精度を指定します。

プログラムでの使用

ブロック パラメーター: IntermediateResultsDataTypeStr
型: 文字ベクトル
値: 'Inherit: Inherit via internal rule' | 'Inherit: Same as output' | 'double' | 'single' | 'int8' | 'uint8' | 'int16' | 'uint16' | 'int32' | 'uint32' | 'int64' | 'uint64' | 'fixdt(1,16)' | 'fixdt(1,16,0)' | 'fixdt(1,16,2^0,0)' | '<data type expression>'
既定の設定: 'Inherit: Same as input'

出力データ型を指定します。以下を指定可能です。

  • データ型継承ルール (例: 継承: 逆伝播による継承)

  • 組み込みデータ型名 (例: single)

  • データ型オブジェクト名 (例: Simulink.NumericType オブジェクト)

  • データ型を評価する式 (例: fixdt(1,16,0))

[データ型アシスタントを表示] ボタン をクリックして、出力データ型の設定に役立つ [データ型アシスタント] を表示します。

詳細は、信号のデータ型の制御を参照してください。

プログラムでの使用

ブロック パラメーター: OutDataTypeStr
型: 文字ベクトル
値: 'Inherit: Inherit via back propagation' | 'Inherit: Inherit from table data' | 'double' | 'single' | 'int8' | 'uint8' | 'int16' | 'uint16' | 'int32' | 'uint32' | 'int64' | 'uint64' | 'fixdt(1,16,0)' | 'fixdt(1,16,2^0,0)' | 'fixdt(1,16,2^0,0)' | '<data type expression>'
既定の設定: 'Inherit: Inherit from table data'

ブロックが出力する最小値を有限で実数値のスカラーとして指定します。既定値は [] (指定なし) です。Simulink ソフトウェアは、以下を行う際にこの値を使用します。

プログラムでの使用

ブロック パラメーター: OutMin
型: 文字ベクトル
値: スカラー
既定の設定: '[]'

ブロックが出力する最大値を有限で実数値のスカラーとして指定します。既定値は [] (指定なし) です。Simulink ソフトウェアは、以下を行う際にこの値を使用します。

プログラムでの使用

ブロック パラメーター: OutMax
型: 文字ベクトル
値: スカラー
既定の設定: '[]'

中間計算の内部ルールを指定します。より速く計算するには [速度] を選択します。この場合、通常で最大 2 ビットの精度が失われる場合があります。

プログラムでの使用

ブロック パラメーター: InternalRulePriority
型: 文字ベクトル
値: 'Speed' | 'Precision'
既定の設定: 'Speed'

このパラメーターを選択して、このブロックについて指定したデータ型を固定小数点ツールがオーバーライドするのを防止します。詳細については、出力データ型設定のロック (Fixed-Point Designer)を参照してください。

プログラムでの使用

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

固定小数点演算の丸めモードを指定します。詳細については、丸め (Fixed-Point Designer)を参照してください。

ブロック パラメーターは常に最近傍の表現可能な値に丸められます。ブロック パラメーターの丸めを直接制御するには、MATLAB の丸め関数を使用する式をマスク フィールドに入力します。

プログラムでの使用

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

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

動作根拠オーバーフローの影響

このチェック ボックスをオンにする (on)。

モデルでオーバーフローが発生する可能性があるので、生成コードに飽和保護を明示的に組み込むことをお勧めします。

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

int8 (符号付き、8 ビット整数) データ型が表すことができる最大値は 127 です。この最大値を超えるブロックの演算結果により 8 ビット整数のオーバーフローが発生します。チェック ボックスがオンになっていると、ブロック出力は 127 で飽和します。同様に、ブロック出力は最小出力値である -128 で飽和します。

このチェック ボックスをオンにしない (off)。

生成コードの効率を最適化することをお勧めします。

ブロックが範囲外の信号を処理する方法を指定しすぎないようにすることをお勧めします。詳細については、信号範囲のエラーのトラブルシューティングを参照してください。

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

int8 (符号付き、8 ビット整数) データ型が表すことができる最大値は 127 です。この最大値を超えるブロックの演算結果により 8 ビット整数のオーバーフローが発生します。チェック ボックスをオフにすると、オーバーフローを引き起こした値は int8 として解釈され、意図しない結果が引き起こされる可能性があります。たとえば、int8 として表されるブロック結果 130 (バイナリで 1000 0010) は -126 です。

このチェック ボックスをオンにすると、飽和は出力や結果だけでなく、このブロックの内部演算すべてに適用されます。通常、オーバーフローが可能ではない場合は、コード生成プロセスで検出されます。この場合、コード ジェネレーターでは飽和コードは生成されません。

プログラムでの使用

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

ブロックの特性

データ型

double | fixed point | integer | single

直達

はい

多次元信号

はい

可変サイズの信号

いいえ

ゼロクロッシング検出

いいえ

拡張機能

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

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

バージョン履歴

R2006b で導入