このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。
Product of Elements
1 つのスカラー入力のコピーまたは逆数、あるいは 1 つの非スカラー入力をベクトルやスカラーに変換

ライブラリ:
Simulink /
Math Operations
HDL Coder /
HDL Floating Point Operations
HDL Coder /
Math Operations
説明
Product of Elements ブロックは、1 つのスカラー、ベクトルまたは行列を入力します。ブロックを使用して以下のことを行うことができます。
スカラー入力を変化させずにコピーする
スカラー入力の逆数 (1 を入力スカラーで除算)
すべての要素を乗算するか、要素の連続した逆数をとることで、ベクトルまたは行列をスカラーに変換
次のいずれかのオプションを使用して、行列をベクトルに変換します。
各行または列の要素を乗算する
各行または列の要素の連続した逆数をとる
Product of Elements ブロックは、機能的には、事前設定された 2 つのパラメーター値をもつ Product ブロックです。
乗算:
要素単位(.*)
入力数:
*
これらのパラメーターのいずれかに既定でない値を設定すると、Product of Elements ブロックを機能的に等価な Product ブロックまたは Divide ブロックに変更できます。
端子
入力
Port_1 — 乗算または除算する 1 番目の入力
スカラー | ベクトル | 行列 | N 次元配列
乗算または除算する 1 番目の入力。スカラー、ベクトル、行列または N 次元配列として指定します。
データ型: half
| single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| Boolean
| fixed point
Port_N — 乗算または除算する N 番目の入力
スカラー | ベクトル | 行列 | N 次元配列
乗算または除算する N 番目の入力。スカラー、ベクトル、行列または N 次元配列として指定します。
データ型: half
| single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| Boolean
| fixed point
X — 乗算する入力信号
スカラー | ベクトル | 行列 | N 次元配列
他の入力に乗算する入力信号。
依存関係
1 つ以上の X 端子を有効にするには、[入力の数] パラメーターに対して 1 つ以上の *
文字を指定します。
データ型: half
| single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| Boolean
| fixed point
÷ — 除算または逆数を求める入力信号
スカラー | ベクトル | 行列 | N 次元配列
除算または逆演算の入力信号。
依存関係
1 つ以上の ÷ 端子を有効にするには、[入力の数] パラメーターに対して 1 つ以上の /
文字を指定します。
データ型: half
| single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| Boolean
| fixed point
出力
Port_1 — 入力を乗算、除算または逆数を求めることで計算される出力
スカラー | ベクトル | 行列 | N 次元配列
入力を乗算、除算、または逆数を求めることで計算される出力。
データ型: half
| single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| Boolean
| fixed point
パラメーター
メイン
入力数 — 入力数と演算のタイプを制御
*
(既定値) | 正の整数スカラー | 各入力端子に対して *
または /
ブロックの 2 つのプロパティを制御します。
ブロックの入力端子の数
各入力が出力されるときに乗算されるかまたは除算されるか
指定に関する詳細は次の通りです。
1
、*
、または/
このブロックは 1 つの入力端子をもっています。要素単位モードでは、ブロックは Product of Elements ブロックで記述されたとおりに入力を処理します。行列モードでは、パラメーター値が
1
または*
の場合、ブロックは入力値を出力します。値が/
である場合、入力は正方行列 (縮退した場合としてスカラーを含む) でなければなりません。ブロックは逆行列を出力します。詳細については、要素単位モードおよび行列モードを参照してください。整数値 > 1
ブロックがもつ入力数は整数値で指定されます。[乗算] パラメーターで指定される要素単位モードまたは行列モードによって、入力は互いに乗算されます。詳細については、要素単位モードおよび行列モードを参照してください。
2 つ以上の
*
と/
から成る単純文字列ブロックは文字ベクトルの長さで与えられる入力数をもちます。
*
に相当する各入力は、乗算され、出力されます。/
に対応する各入力は除算され、出力されます。演算は、[乗算] パラメーターで指定されるように、要素単位モードまたは行列モードで行われます。詳細については、要素単位モードおよび行列モードを参照してください。
プログラムでの使用
ブロック パラメーター: Inputs |
型: 文字ベクトル |
値: '2' | '*' | '**' | '*/' | '*/*' | ... |
既定の設定: '*' |
乗算 — 要素単位 (.*) または行列 (*) の乗算
[要素単位(.*)]
(既定値) | [行列 (*)]
ブロックが [要素単位(.*)]
または [行列 (*)]
の乗算を実行するかどうかを指定します。
プログラムでの使用
ブロック パラメーター: Multiplication |
型: 文字ベクトル |
値: 'Element-wise(.*)' | 'Matrix(*)' |
既定の設定: 'Element-wise(.*)' |
乗算範囲 — すべての次元または指定した次元
すべての次元
(既定値) | 指定した次元
乗算範囲の次元を [すべての次元]
または [指定した次元]
で指定します。
[すべての次元]
を選択し、コンフィギュレーション パラメーター [行優先の配列レイアウトに最適化されたアルゴリズムを使用] を選択すると、Simulink® はシミュレーションに対して行優先アルゴリズムを有効にします。行優先のコードを生成するには、[行優先の配列レイアウトに最適化されたアルゴリズムを使用] を選択するほかに、コンフィギュレーション パラメーター [配列のレイアウト] (Simulink Coder) を [行優先]
に設定します。列優先アルゴリズムと行優先のルゴリズムで異なるのは乗算の順序のみです。場合によっては、同じデータセットに対する演算順序が異なることから、列優先アルゴリズムと行優先アルゴリズムの出力の数値にわずかな差が生じることがあります。
[指定した次元]
を選択する場合、[次元] を 1
または 2
と指定できます。
依存関係
このパラメーターを有効にするには、[入力の数] を *
に、[乗算] を [要素単位(.*)]
に設定します。
プログラムでの使用
ブロック パラメーター: CollapseMode |
型: 文字ベクトル |
値: 'All dimensions' | 'Specified dimension' |
既定の設定: 'All dimensions' |
次元 — 乗算範囲の次元
1
(既定値) | 2
| ...
| N
乗算範囲の次元を入力信号の次元数以下の整数として指定します。
依存関係
このパラメーターを有効にするには、次のように設定します。
[入力の数] を
*
に設定[乗算] を
[要素単位(.*)]
に設定[乗算範囲] を
[指定した次元]
に設定
プログラムでの使用
ブロック パラメーター: CollapseDim |
型: 文字ベクトル |
値: '1' | '2' | ... |
既定の設定: '1' |
サンプル時間 — -1
以外のサンプル時間値
-1
(既定値) | スカラー | ベクトル
サンプル時間を -1
以外の値として指定します。詳細については、サンプル時間の指定を参照してください。
依存関係
このパラメーターは、明示的に -1
以外の値に設定されていない限り表示されません。詳細は、サンプル時間が推奨されないブロックを参照してください。
プログラムでの使用
ブロック パラメーター: SampleTime |
型: string スカラーまたは文字ベクトル |
既定の設定: "-1" |
信号属性
すべての入力が同じデータ型をもつ — すべての入力が同じデータ型をもつようにします。
off
(既定値) | on
すべての入力信号が同じデータ型をもたなければならないかどうかを指定します。このパラメーターを有効にすると、入力信号のデータ型が異なる場合はシミュレーション中にエラーが発生します。
プログラムでの使用
ブロック パラメーター: InputSameDT |
型: 文字ベクトル |
値: 'off' | 'on' |
既定の設定: 'off' |
出力の最小値 — 範囲チェックの最小出力値
[]
(既定値) | スカラー
Simulink がチェックする出力範囲の下限値。
Simulink は、最小値を使って以下を行います。
一部のブロックに対するパラメーター範囲のチェック (ブロック パラメーターの最小値と最大値の指定を参照)
シミュレーション範囲のチェック (信号範囲の指定およびシミュレーション範囲のチェックの有効化を参照)
固定小数点データ型の自動スケーリング
モデルから生成するコードの最適化。この最適化により、アルゴリズム コードが削除され、SIL やエクスターナル モードなどの一部のシミュレーション モードの結果に影響を与えることがあります。詳細については、Optimize using the specified minimum and maximum values (Embedded Coder)を参照してください。
メモ
[出力の最小値] により、実際の出力信号が飽和する (またはクリップされる) ことはありません。代わりに、Saturation ブロックを使用してください。
プログラムでの使用
ブロック パラメーター: OutMin |
型: 文字ベクトル |
値: '[ ]' | スカラー |
既定の設定: '[ ]' |
出力の最大値 — 範囲チェックの最大出力値
[]
(既定値) | スカラー
Simulink がチェックする出力範囲の上限値。
Simulink は、最大値を使って以下を行います。
一部のブロックに対するパラメーター範囲のチェック (ブロック パラメーターの最小値と最大値の指定を参照)
シミュレーション範囲のチェック (信号範囲の指定およびシミュレーション範囲のチェックの有効化を参照)
固定小数点データ型の自動スケーリング
モデルから生成するコードの最適化。この最適化により、アルゴリズム コードが削除され、SIL やエクスターナル モードなどの一部のシミュレーション モードの結果に影響を与えることがあります。詳細については、Optimize using the specified minimum and maximum values (Embedded Coder)を参照してください。
メモ
[出力の最大値] により、実際の出力信号が飽和する (またはクリップされる) ことはありません。代わりに、Saturation ブロックを使用してください。
プログラムでの使用
ブロック パラメーター: OutMax |
型: 文字ベクトル |
値: '[ ]' | スカラー |
既定の設定: '[ ]' |
出力データ型 — 出力データ型を指定
継承: 内部ルールによる継承
(既定値) | 継承: 逆伝播による継承
| 継承: 1 番目の入力と同じ
| 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>
出力のデータ型を選択します。型は継承されるか、直接指定されるか、Simulink.NumericType
などのデータ型オブジェクトとして表現されます。詳細については、信号のデータ型の制御を参照してください。
継承オプションを選択すると、ブロックは次のように動作します。
継承: 内部ルールによる継承
— Simulink は、組み込みターゲット ハードウェアのプロパティを考慮しつつ、数値の精度、パフォーマンス、および生成コードのサイズのバランスが取れるように、データ型を選択します。組み込みターゲット ハードウェアの設定を変更すると、内部ルールにより選択されるデータ型が変更される可能性があります。たとえば、ブロックがint8
型の入力にint16
のゲインを乗算し、ターゲット ハードウェア タイプとして[ASIC/FPGA]
が指定されている場合、出力データ型はsfix24
です。ターゲット ハードウェアとして[Unspecified (assume 32-bit Generic)]
(汎用 32 ビット マイクロプロセッサ) が指定された場合、出力データ型はint32
です。ターゲット マイクロプロセッサによって指定される語長では出力範囲に対応できない場合、Simulink は診断ビューアーにエラーを表示します。コードの効率と数値の精度が、ソフトウェアにより同時に最適化されるとは限りません。内部ルールが、数値精度またはパフォーマンスに対する要求を満たさない場合は、以下のいずれかを行ってください。
出力データ型を明示的に指定する。
単に
継承: 入力と同じ
を選択します。fixdt(1,32,16)
のように既定のデータ型を明示的に指定し、固定小数点ツールを使用してモデルにデータ型を推奨する。詳細については、fxptdlg
(Fixed-Point Designer) を参照してください。独自の継承ルールを指定するには、
[継承: 逆伝播による継承]
を使用し、Data Type Propagation ブロックを使用します。このブロックの使い方の例については、Signal Attributes ライブラリの Data Type Propagation Examples ブロックを参照してください。
継承: 逆伝播による継承
— 駆動ブロックのデータ型を使用します。継承: 1 番目の入力と同じ
— 1 番目の入力信号のデータ型を使用します。
依存関係
入力が単精度より小さい浮動小数点データ型の場合、[継承: 内部ルールによる継承]
出力データ型は単精度より小さい浮動小数点の出力型を継承するコンフィギュレーション パラメーターの設定によって変わります。データ型の符合化に必要なビット数が単精度データ型の符合化に必要な 32 ビットより少ない場合、データ型は単精度より小さくなります。たとえば、half
と int16
は単精度より小さくなります。
プログラムでの使用
ブロック パラメーター: OutDataTypeStr |
型: 文字ベクトル |
値: 'Inherit: Inherit via internal rule | 'Inherit: Same as first input' | 'Inherit: Inherit via back propagation' | '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: Inherit via internal rule' |
固定小数点ツールによる変更に対して出力データ型の設定をロックする — 固定小数点ツールが出力データ型をオーバーライドするのを防止
off
(既定値) | on
固定小数点ツールが、ブロックに指定した [出力] データ型をオーバーライドしないようにするには、このパラメーターを選択します。詳細については、[出力データ型の設定をロックする] の使用 (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
と等価です。
詳細については、丸め (Fixed-Point Designer)を参照してください。
ブロック パラメーターは常に最近傍の表現可能な値に丸められます。ブロックパラメーターの丸めを直接制御するには、MATLAB の丸め関数を使用する式をマスク フィールドに入力します。
プログラムでの使用
ブロック パラメーター: RndMeth |
型: 文字ベクトル |
値: 'Ceiling' | 'Convergent' | 'Floor' | 'Nearest' | 'Round' | 'Simplest' | 'Zero' |
既定の設定: 'Floor' |
整数オーバーフローで飽和 — オーバーフロー アクションの方法
off
(既定値) | on
オーバーフローで飽和するかラップするかを指定します。
動作 | 根拠 | オーバーフローの影響 | 例 |
---|---|---|---|
このチェック ボックスをオンにする ( | モデルでオーバーフローが発生する可能性があるので、生成コードに飽和保護を明示的に組み込むことをお勧めします。 | オーバーフローは、データ型が表現できる最小値または最大値のいずれかに飽和します。 |
|
このチェック ボックスをオンにしない ( | 生成コードの効率を最適化することをお勧めします。 ブロックが範囲外の信号を処理する方法を指定しすぎないようにすることをお勧めします。詳細については、信号範囲のエラーのトラブルシューティングを参照してください。 | オーバーフローは、データ型によって表現される適切な値にラップされます。 |
|
このチェック ボックスをオンにすると、飽和は出力や結果だけでなく、このブロックの内部演算すべてに適用されます。通常、オーバーフローが可能ではない場合は、コード生成プロセスで検出されます。この場合、コード ジェネレーターでは飽和コードは生成されません。
プログラムでの使用
ブロック パラメーター: SaturateOnIntegerOverflow |
型: 文字ベクトル |
値: 'off' | 'on' |
既定の設定: 'off' |
ブロックの特性
データ型 |
|
直達 |
|
多次元信号 |
|
可変サイズの信号 |
|
ゼロクロッシング検出 |
|
アルゴリズム
Product of Elements ブロックは、これらのアルゴリズムを使用して、浮動小数点、組み込み整数および固定小数点型の入力に対して要素単位演算を実行します。
入力 | 要素単位演算 | アルゴリズム |
---|---|---|
実数スカラー、 | 乗算 | y = u |
除算 | y = 1/u | |
要素 | 乗算 | y = u1*u2*u3*...*uN |
除算 | y = ((((1/u1)/u2)/u3).../uN) | |
複素数スカラー、 | 乗算 | y = u |
除算 | y = 1/u | |
要素 | 乗算 | y = u1*u2*u3*...*uN |
除算 | y = ((((1/u1)/u2)/u3).../uN) |
要素単位の乗算または除算用に指定された次元が行列の行または列である場合、このアルゴリズムはその行または列に適用されます。このモデルについて考えます。
一番上の Product of Elements ブロックは、4 つの要素の連続した逆数をとることで、行列入力をスカラーに変換します。
y = ((((1/2+i)/3)/4-i)/5)
一番下の Product of Elements ブロックは、2 番目の次元に沿って連続した逆数をとることで、行列入力をベクトルに変換します。
y(1) = ((1/2+i)/3)
y(2) = ((1/4-i)/5)
拡張機能
C/C++ コード生成
Simulink® Coder™ を使用して C および C++ コードを生成します。
HDL コード生成
HDL Coder™ を使用して FPGA 設計および ASIC 設計のための Verilog および VHDL のコードを生成します。
HDL Coder™ には、HDL の実装および合成されたロジックに影響する追加のコンフィギュレーション オプションがあります。
HDL Coder は、複数の要素で単一のベクトル入力をもつ Product ブロックまたは Product of Elements ブロックについて、[ツリー]
アーキテクチャおよび [カスケード]
アーキテクチャをサポートしています。
このブロックには、生成されたコードで追加のレイテンシを導入するマルチサイクル実装があります。追加されたレイテンシを確認するには、生成されたモデルまたは検証モデルを表示します。生成されたモデルと検証モデル (HDL Coder)を参照してください。
アーキテクチャ | 追加のレイテンシのサイクル | 説明 |
---|---|---|
線形 (既定値) | 0 | 積の和を計算する加算器の線形チェーンを生成します。 |
ツリー | 0 | 積の和を計算する加算器のツリー構造を生成します。 |
カスケード | ブロックが単一のベクトル入力端子をもつ場合は 1。 | この実装はレイテンシ * エリアを最適化し、
カスケードアーキテクチャのベスト プラクティス (HDL Coder)を参照してください。 |
メモ
Product of Element ブロックは、Native Floating Point
モードでの double
データ型を使用した HDL コード生成をサポートしません。
ブロックを行列乗算モードで使用する場合、[DotProductStrategy] を指定できます。この設定により、行列乗算を、加算器および乗算器のツリーを使用して実装するか、Multiply-Accumulate ブロックの実装を使用するかが決定されます。既定の設定は Fully Parallel
です。
メモ
Native Floating Point
モードを使用する場合、[DotProductStrategy] を [Fully Parallel
] に設定しなければなりません。
詳細については、DotProductStrategy (HDL Coder)を参照してください。
行列とベクトルの設計に関する考慮事項 (HDL Coder)も参照してください。
一般 | |
---|---|
ConstrainedOutputPipeline | 既存の遅延を設計内で移動することによって出力に配置するレジスタの数。分散型パイプラインではこれらのレジスタは再分散されません。既定の設定は |
DSPStyle | 乗算器のマッピングの合成属性。既定の設定は |
InputPipeline | 生成されたコードに挿入する入力パイプライン ステージ数。分散型パイプラインと制約付き出力パイプラインでは、これらのレジスタを移動できます。既定の設定は |
OutputPipeline | 生成されたコードに挿入する出力パイプライン ステージ数。分散型パイプラインと制約付き出力パイプラインでは、これらのレジスタを移動できます。既定の設定は |
ネイティブ浮動小数点 | |
---|---|
HandleDenormals | HDL Coder で追加のロジックを挿入して設計で非正規数を処理するかどうかを指定します。非正規数とは、その大きさが仮数の先頭にゼロを付けずに表現できる最小の浮動小数点数より小さい数値のことです。既定の設定は |
LatencyStrategy | 浮動小数点演算子について、設計内のブロックを |
NFPCustomLatency | 値を指定するには [LatencyStrategy] を |
MantissaMultiplyStrategy | コード生成中に仮数乗算演算を実装する方法を指定します。さまざまな設定を使用することで、ターゲット FPGA デバイスでの DSP の使用方法を制御できます。既定の設定は |
既定 (線形) の実装は複素数データをサポートします。
複素数の除算はサポートされていません。除算モードまたは逆数モードでの Product ブロックのブロック実装については、Divide ブロックのリファレンス ページのHDL コード生成を参照してください。
PLC コード生成
Simulink® PLC Coder™ を使用して構造化テキスト コードを生成します。
固定小数点の変換
Fixed-Point Designer™ を使用して固定小数点システムの設計とシミュレーションを行います。
バージョン履歴
R2006a より前に導入
参考
Product | Divide | Dot Product
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- 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)