MinMax
最小入力値または最大入力値を出力
ライブラリ:
Simulink /
Math Operations
HDL Coder /
Math Operations
説明
MinMax ブロックは、入力の最小要素または最大要素を出力します。ブロックが最小値と最大値のどちらを出力するかを、"関数" パラメーターを設定して選択します。
MinMax ブロックは、各入力値が NaN である場合を除き、NaN である入力値を無視します。すべての入力値が NaN の場合、出力は、スカラーまたは各出力ベクトル要素の値としての NaN です。
例
拡張例
フォールトトレラント燃料制御システムのモデル化
この例では、Stateflow® と Simulink® の機能を組み合わせてハイブリッド システムをモデル化する方法を示します。このタイプのモデル化は、離散イベントに基づいて多数の可能な動作モードをもつシステムに対して特に便利です。従来の信号の流れが Simulink で処理されるのに対して、制御設定の変更は Stateflow で実装されます。この例で説明するモデルでは、ガソリン エンジンの燃料制御システムを表します。このシステムは、個々のセンサーの故障を検出し、制御システムが連続稼働用に動的に再設定されるという点で堅牢です。
端子
入力
ブロックが最小値または最大値を出力する元の入力信号を提供します。
このブロックが単一の入力端子をもっている場合、入力はスカラーまたはベクトルでなければなりません。このブロックは、入力ベクトルの最小要素または最大要素に等しいスカラーを出力します。
このブロックが複数の入力端子をもっている場合、非スカラー入力はいずれも同じ次元をもたなければなりません。このブロックは、非スカラー入力と同じ次元を有するようにスカラー入力を拡張します。このブロックは、入力と同じ次元をもっている信号を出力します。各出力要素は、対応する入力要素の最小値または最大値に等しくなります。
依存関係
行列入力をサポートするには、[入力端子の数] パラメーターを 1 より大きい整数に設定しなければなりません。すべての非スカラー入力は同じ次元をもつ必要があります。
データ型: half | single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | fixed point
ブロックが最小値または最大値を出力する元の入力信号を提供します。
このブロックが複数の入力端子をもっている場合、非スカラー入力はいずれも同じ次元をもたなければなりません。このブロックは、非スカラー入力と同じ次元を有するようにスカラー入力を拡張します。このブロックは、入力と同じ次元をもっている信号を出力します。各出力要素は、対応する入力要素の最小値または最大値に等しくなります。
依存関係
1 つより多い入力信号を使用するには、[入力端子の数] を 1 より大きい整数に設定します。
データ型: half | single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | fixed point
出力
ブロックが 1 つの入力をもつ場合、出力はスカラー値で、入力要素の最小または最大と等しくなります。ブロックが複数の入力をもつ場合、出力は入力と同じ次元をもつ信号です。各出力要素は、対応する入力要素の最小値または最大値に等しくなります。ブロック入力に異なる入力データ型がある場合、出力のサイズは入力と同じですが、精度が低くなることがあります。たとえば、入力の 1 つが int8 で 1 つが uint8 である場合、出力データ型も 8 ビットの sfix8_E1 ですが、精度が低くなります。
データ型: half | single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | fixed point
パラメーター
メイン
関数 min または関数 max を入力に適用するかどうかを指定します。
プログラムでの使用
ブロック パラメーター: Function |
| 型: 文字ベクトル |
値: 'min' | 'max' |
既定の設定: 'min' |
このブロックへの入力の数を指定します。
プログラムでの使用
ブロック パラメーター: Inputs |
| 型: 文字ベクトル |
値: positive integer |
既定の設定: '1' |
指定した次元に沿って関数を適用する方法を指定します。
すべての次元— すべての次元のすべての入力値について関数を適用します。指定した次元— 指定した次元のすべての入力値について関数を適用します。
たとえば、次のモデルでは、[関数] を [最大値] に設定し、[適用範囲] を [すべての次元] に設定しています。ブロックは、すべての次元の最も大きい入力値を返します。
![2D matrix with Constant block value [1 3 5;3 6 7;9 10 1] as input to MinMax block configured for all dimensions](minmax_alldim.png)
依存関係
このパラメーターを有効にするには、[入力端子の数] が 1 でなければなりません。
プログラムでの使用
ブロック パラメーター: CollapseMode |
| 型: 文字ベクトル |
値: 'All dimensions' | 'Specified dimension' |
既定の設定: 'All dimensions' |
関数を適用する次元を正の整数として指定します。たとえば、2 次元行列では、1 の場合は各列に関数が適用され、2 の場合は各行に関数が適用されます。
たとえば、次のモデルでは、[関数] を [最大値] に設定し、[適用範囲] を [指定した次元] に設定し、[次元] を 2 に設定しています。ブロックは、各行の最も大きい入力値を返します。
![2D matrix with Constant block value [1 3 5;3 6 7;9 10 1] as input to MinMax block configured for dimension 2](minmax_2dim.png)
依存関係
このパラメーターを有効にするには、[適用範囲] を [指定した次元] に設定します。
プログラムでの使用
ブロック パラメーター: CollapseDim |
| 型: 文字ベクトル |
| 値: 正の整数 |
既定の設定: '1' |
ゼロクロッシング検出を有効にする場合は選択します。詳細については、ゼロクロッシング検出を参照してください。
プログラムでの使用
ブロック パラメーター: ZeroCross |
| 型: 文字ベクトル | string |
値: 'off' | 'on' |
既定の設定: 'on' |
サンプルの時間間隔を指定します。サンプル時間を継承するには、このパラメーターを -1 に設定します。詳細については、サンプル時間の指定を参照してください。
依存関係
このパラメーターは、-1 以外の値に設定した場合にのみ表示されます。詳細は、サンプル時間が推奨されないブロックを参照してください。
プログラムでの使用
ブロック パラメーターの値をプログラムで設定するには、関数 set_param を使用します。
| パラメーター: | SampleTime |
| 値: | "-1" (既定値) | scalar or vector in quotes |
信号属性
このチェック ボックスをオンにした場合、すべての入力が同じデータ型でなければなりません。
プログラムでの使用
ブロック パラメーター: InputSameDT |
| 型: 文字ベクトル |
値: 'off' | 'on' |
既定: 'off' |
ソフトウェアでチェックする出力範囲の下限値。
最小値を使用して以下が行われます。
一部のブロックに対するパラメーター範囲のチェック (ブロック パラメーターの最小値と最大値の指定を参照)
シミュレーション範囲のチェック (信号範囲の指定およびシミュレーション範囲のチェックの有効化を参照)
固定小数点データ型の自動スケーリング
モデルから生成するコードの最適化。この最適化により、アルゴリズム コードが削除され、SIL やエクスターナル モードなどの一部のシミュレーション モードの結果に影響を与えることがあります。詳細については、Optimize using the specified minimum and maximum values (Embedded Coder)を参照してください。
ヒント
[出力の最小値] により、実際の出力信号が飽和する (またはクリップされる) ことはありません。代わりに、Saturation ブロックを使用してください。
プログラムでの使用
ブロック パラメーターの値をプログラムで設定するには、関数 set_param を使用します。
| パラメーター: | OutMin |
| 値: | '[]' (既定値) | scalar in quotes |
ソフトウェアでチェックする出力範囲の上限値。
最大値を使用して以下が行われます。
一部のブロックに対するパラメーター範囲のチェック (ブロック パラメーターの最小値と最大値の指定を参照)
シミュレーション範囲のチェック (信号範囲の指定およびシミュレーション範囲のチェックの有効化を参照)
固定小数点データ型の自動スケーリング
モデルから生成するコードの最適化。この最適化により、アルゴリズム コードが削除され、SIL やエクスターナル モードなどの一部のシミュレーション モードの結果に影響を与えることがあります。詳細については、Optimize using the specified minimum and maximum values (Embedded Coder)を参照してください。
ヒント
[出力の最大値] により、実際の出力信号が飽和する (またはクリップされる) ことはありません。代わりに、Saturation ブロックを使用してください。
プログラムでの使用
ブロック パラメーターの値をプログラムで設定するには、関数 set_param を使用します。
| パラメーター: | OutMax |
| 値: | '[]' (既定値) | scalar in quotes |
出力のデータ型を選択します。型は継承されるか、直接指定されるか、Simulink.NumericType などのデータ型オブジェクトとして表現されます。
継承オプションを選択すると、ブロックは次のように動作します。
継承: MSB を保持— 演算の全範囲を維持するデータ型を選択しますが、全範囲の型が組み込みターゲット ハードウェアに適合しない場合、その範囲を削減します。このルールでは、オーバーフローは決して発生しません。
継承: LSB を保持—演算の精度を維持するデータ型を選択しますが、全範囲の型が組み込みターゲット ハードウェアに適合しない場合、その範囲を削減します。このルールでは、オーバーフローが発生することがあります。
組み込みターゲット ハードウェアの設定を変更すると、これらの内部ルールにより選択されるデータ型が変更される可能性があります。コードの効率と数値の精度が、ソフトウェアにより同時に最適化されるとは限りません。ルールが数値精度またはパフォーマンスに対する要求を満たさない場合は、以下のいずれかを行ってください。
出力データ型を明示的に指定する。
単に
継承: 1 番目の入力と同じを選択します。fixdt(1,32,16)のように既定のデータ型を明示的に指定し、固定小数点ツールを使用してモデルにデータ型を推奨する。詳細については、fxptdlg(Fixed-Point Designer) を参照してください。独自の継承ルールを指定するには、
[継承: 逆伝播による継承]を使用し、Data Type Propagation ブロックを使用します。このブロックの使い方の例については、Signal Attributes ライブラリの Data Type Propagation Examples ブロックを参照してください。
継承: 内部ルールによる継承— Simulink® は、組み込みターゲット ハードウェアのプロパティを考慮しつつ、数値の精度、パフォーマンス、および生成コードのサイズのバランスが取れるように、データ型を選択します。組み込みターゲット ハードウェアの設定を変更すると、内部ルールにより選択されるデータ型が変更される可能性があります。コードの効率と数値の精度が、ソフトウェアにより同時に最適化されるとは限りません。内部ルールが、数値精度またはパフォーマンスに対する要求を満たさない場合は、以下のいずれかを行ってください。出力データ型を明示的に指定する。
fixdt(1,32,16)のように既定のデータ型を明示的に指定し、固定小数点ツールを使用してモデルにデータ型を推奨する。詳細については、fxptdlg(Fixed-Point Designer) を参照してください。独自の継承ルールを指定するには、
[継承: 逆伝播による継承]を使用し、Data Type Propagation ブロックを使用します。このブロックの使い方の例については、Signal Attributes ライブラリの Data Type Propagation Examples ブロックを参照してください。
継承: 逆伝播による継承— 駆動ブロックのデータ型を使用します。継承: 最初のデータ入力と同じ— 1 番目のデータ入力端子のデータ型を使用します。
データ属性の設定には [データ型アシスタント] が役立ちます。[データ型アシスタント] を使用するには、
をクリックします。詳細については、データ型アシスタントを利用したデータ型の指定を参照してください。
依存関係
入力が単精度より小さい浮動小数点データ型の場合、[継承: 内部ルールによる継承] 出力データ型は単精度より小さい浮動小数点の出力型を継承するコンフィギュレーション パラメーターの設定によって変わります。データ型の符合化に必要なビット数が単精度データ型の符合化に必要な 32 ビットより少ない場合、データ型は単精度より小さくなります。たとえば、half と int16 は単精度より小さくなります。
プログラムでの使用
ブロック パラメーター: 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,0)' | 'fixdt(1,16,2^0,0)' | '<data type expression>' |
既定の設定: 'Inherit: Inherit via internal rule' |
固定小数点ツールが、ブロックに指定した [出力] データ型をオーバーライドしないようにするには、このパラメーターを選択します。詳細については、[出力データ型の設定をロックする] の使用 (Fixed-Point Designer)を参照してください。
プログラムでの使用
ブロック パラメーターの値をプログラムで設定するには、関数 set_param を使用します。
| パラメーター: | LockScale |
| 値: | 'off' (既定値) | 'on' |
固定小数点演算の丸めモードを指定します。詳細については、丸めモード (Fixed-Point Designer)を参照してください。
ブロック パラメーターは常に最近傍の表現可能な値に丸められます。ブロックパラメーターの丸めを直接制御するには、MATLAB® の丸め関数を使用する式をマスク フィールドに入力します。
プログラムでの使用
ブロック パラメーターの値をプログラムで設定するには、関数 set_param を使用します。
| パラメーター: | RndMeth |
| 値: | 'Floor' (既定値) | 'Ceiling' | 'Convergent' | 'Nearest' | 'Round' | 'Simplest' | 'Zero' |
オーバーフローで飽和するかラップするかを指定します。
on— オーバーフローは、データ型が表現できる最小値または最大値のいずれかに飽和します。off— オーバーフローは、データ型によって表現される適切な値にラップされます。
たとえば、符号付き 8 ビット整数 int8 で表現できる最大値は 127 です。この最大値を超えるブロックの演算結果により 8 ビット整数のオーバーフローが発生します。
このパラメーターがオンになっていると、ブロック出力は 127 で飽和します。同様に、ブロック出力は最小出力値である -128 で飽和します。
このパラメーターをオフにすると、オーバーフローを引き起こした値は
int8として解釈され、意図しない結果が引き起こされる可能性があります。たとえば、int8として表されるブロック結果 130 (バイナリで 1000 0010) は -126 です。
ヒント
モデルでオーバーフローが発生する可能性があり、生成コードに飽和保護を明示的に組み込む必要があるときには、このパラメーターをオンにすることを検討してください。
生成コードの効率を最適化する場合には、このパラメーターをオフにすることを検討してください。このパラメーターをオフにすると、ブロックが範囲外の信号を処理する方法を指定しすぎないようにする点でも役立ちます。詳細については、信号範囲のエラーのトラブルシューティングを参照してください。
このパラメーターをオンにすると、飽和は出力や結果だけでなく、このブロックの内部演算すべてに適用されます。
通常、オーバーフローが可能ではない場合は、コード生成プロセスで検出されます。この場合、コード ジェネレーターでは飽和コードは生成されません。
プログラムでの使用
ブロック パラメーターの値をプログラムで設定するには、関数 set_param を使用します。
| パラメーター: | SaturateOnIntegerOverflow |
| 値: | 'off' (既定値) | 'on' |
ブロックの特性
データ型 |
|
直達 |
|
多次元信号 |
|
可変サイズの信号 |
|
ゼロクロッシング検出 |
|
拡張機能
C/C++ コード生成
Simulink® Coder™ を使用して C および C++ コードを生成します。
HDL Coder™ には、HDL の実装および合成されたロジックに影響する追加のコンフィギュレーション オプションがあります。
| アーキテクチャ | 追加のレイテンシのサイクル | 説明 |
|---|---|---|
ツリー (既定の設定) | 0 | 比較演算子のツリー構造を生成します。 |
| 一般 | |
|---|---|
| ConstrainedOutputPipeline | 既存の遅延を設計内で移動することによって出力に配置するレジスタの数。分散型パイプラインではこれらのレジスタは再分散されません。既定の設定は |
| InputPipeline | 生成されたコードに挿入する入力パイプライン ステージ数。分散型パイプラインと制約付き出力パイプラインでは、これらのレジスタを移動できます。既定の設定は |
| OutputPipeline | 生成されたコードに挿入する出力パイプライン ステージ数。分散型パイプラインと制約付き出力パイプラインでは、これらのレジスタを移動できます。既定の設定は |
| SynthesisAttributes | モデルのブロックとブロック出力信号の合成属性を指定します。生成された HDL コードには、これらの属性が含まれます。詳細については、SynthesisAttributes (HDL Coder)を参照してください。 |
| ネイティブ浮動小数点 | |
|---|---|
| LatencyStrategy | 浮動小数点演算子について、設計内のブロックを |
PLC コード生成
Simulink® PLC Coder™ を使用して構造化テキスト コードを生成します。
固定小数点の変換
Fixed-Point Designer™ を使用して固定小数点システムの設計とシミュレーションを行います。
バージョン履歴
R2006a より前に導入MinMax ブロックには、効率的な出力データ型の選択を支援する、新しい [出力データ型] の継承オプションがあります。
より予測可能な出力データ型の選択と、選択の優先順位のより細かな制御を実現するには、新しい [継承: MSB を保持] および [継承: LSB を保持] オプションを、[継承: 内部ルールによる継承] の代わりに使用することを検討してください。経験則的に範囲と精度のバランスをとるアルゴリズムに対しては、[継承: 内部ルールによる継承] の使用を検討してください。ただし、これは予期しない結果を招く場合があります。
[SynthesisAttributes] HDL ブロック プロパティを使用して、ブロックとその出力信号の合成属性を指定します。HDL Coder は、生成される HDL コードにこれらの属性を含めます。
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)


