ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

Product

スカラー、非スカラーの乗算と除算、あるいは行列の乗算と逆行列

ライブラリ

Math Operations

説明

Divide ブロックと Product of Elements ブロックは Product ブロックのバリアントです。

  • Divide ブロックについては、Divide を参照してください。

  • Product of Elements ブロックについては、Product of Elements を参照してください。

Product ブロックは 2 つの入力を乗算して結果を出力します。入力は、2 つともスカラー、スカラーと非スカラー、あるいは同じ次元をもつ 2 つの非スカラーの場合があります。この動作を指定する既定のパラメーター値は以下のようになります。

  • 乗算: 要素単位(.*)

  • 入力数: 2

次の表は、既定のブロック パラメーター値を使うサンプル入力に対する Product ブロックの出力を示します。

入力と動作

スカラー X スカラー

2 つの入力の積を出力します。

スカラー X 非スカラー

入力の非スカラーと同じ次元をもつ非スカラーを出力します。出力の非スカラーの各要素は、入力のスカラーと入力の非スカラーの対応する要素の積です。

非スカラー X 非スカラー

入力と同じ次元をもつ非スカラーを出力します。出力の各要素は、入力の対応する要素の積です。

Product ブロック (または適切に構成される場合 Divide ブロックか Product of Elements ブロック) は以下のことを行うことができます。

  • スカラー、ベクトル、または行列入力の数を、数値的に乗算や除算します。

  • 行列入力の数に行列の乗算や除算を実行します。

Product ブロックは、[乗算] パラメーターの値に基づいてスカラーまたは行列の乗算を行います。このブロックは、[入力数] パラメーターに基づいて 1 つ以上の入力を受け入れます。[入力数] パラメーターは、各入力に実行される演算も指定します。

Product ブロックは、実行する演算が数学的に定義される結果をもつ場合、スカラー、ベクトル、行列の任意の組み合わせを入力できます。このブロックは、指定した演算を入力に対して実行し、結果を出力します。

Product ブロックには、2 つのモードがあります。要素単位モードは、2 つの非スカラー入力を要素ごとに処理します。行列モードは、2 つの非スカラー入力を行列として処理します。次の 2 節では、これらの 2 つのモードを説明します。

要素単位モード

[乗算] パラメーターの値が [要素単位(.*)] である場合、Product ブロックは要素単位モードになります。この場合、ブロックは任意の非スカラー入力の個々の数値要素に演算を行います。MATLAB® の等価な演算子は .* です。要素単位モードでは、Product ブロックは、乗算、除算、算術的な逆演算などを実行できます。

[入力数] パラメーターの値は、どれだけの入力数があるか、それぞれが出力を生成するために乗算されるか除算されるかを決めます。要素単位モードの Product ブロックが 1 つの入力のみをもつ場合は、Product of Elements ブロックと機能的に等価です。ブロックが複数の入力をもつ場合、非スカラーの入力は同じ次元をもたなければなりません。ブロックは、これらと同じ次元をもつ非スカラーを出力します。ブロックは、出力を計算するためにスカラー入力を、非スカラー入力と同じ次元をもつ非スカラーにはじめに拡張します。

次の表は、[入力数] パラメーターの値を使って、サンプル入力に対する Product ブロックの出力を示します。

パラメーター値

入力数: 2

入力数: */

入力数: /**/

入力数: **

入力数: */*

行列モード

[乗算] パラメーターの値が [行列 (*)] である場合、Product ブロックは行列モードになります。この場合、ブロックは非スカラー入力を行列として処理します。MATLAB の等価な演算は、* です。行列モードでは、Product ブロックは正方行列の逆行列を計算します。さらに、結果が数学的に定義される次元をもつ、任意の数の行列の乗算や除算を行うことができます。

[入力数] パラメーターの値は、どれだけの入力数があるか、それぞれの入力行列が出力を生成するために乗算されるか除算されるかを決めます。[入力数] の構文は、要素単位モードの場合と同じです。これらのモードでは、乗算と除算のタイプが異なります。

シミュレーションとコード生成の予想される相違点

複素数の浮動小数点入力に対する要素単位の演算について、近傍オーバーフローの場合は、シミュレーションとコード生成の結果は異なる可能性があります。[コンフィギュレーション パラメーター] ダイアログ ボックスの [コード生成][インターフェイス] ペインで [複素数 が選択されていて [非有限数] が選択されていない場合でも、コード ジェネレーターは中程度のオーバーフローに対する特別なケース コードを出力しません。この方法は、極端な値を含まない一般的なケースの組み込み演算の効率を向上させます。入力に極端な値が含まれる可能性がある場合、これらのケースを明示的に管理してください。

NaN および inf の値が数学的に無意味の場合は、生成コードはシミュレーションとしてこれらの値とまったく同じパターンは生成しない可能性があります。たとえば、シミュレーション出力に NaN が含まれる場合、生成コードからの出力にも NaN が含まれますが、同じ場所に含まれる必要はありません。

サポートするデータ型

Product ブロックは、Simulink® がサポートする任意の数値データ型 (固定小数点データ型を含む) の実数値信号または複素数値信号を受け入れます。詳細は、Simulink ドキュメンテーションの「Simulink でサポートされているデータ型」を参照してください。

Product ブロックは、boolean または固定小数点データ型をもつ複素数値信号の場合、数値的な除算をサポートしません。他のタイプの場合、ブロックは、入力信号と出力信号すべてが同じ組み込みデータ型を指定する場合に限り、除数として複素数値信号を受け取ります。ただし、この場合、ブロックは、指定された丸めモードを無視します。

Product ブロックは要素単位モードで動作している場合、多次元信号を受け取ります。行列モードで動作している場合には、多次元信号を受け取りません。詳細は、「信号の次元」要素単位モード、および行列モードを参照してください。

パラメーターとダイアログ ボックス

入力数

ブロックの 2 つのプロパティを制御します。

  • ブロックの入力端子の数

  • 各入力が出力されるときに乗算されるかまたは除算されるか

設定

既定の設定: Product ブロックの場合は 2Divide ブロックの場合は */Product of Elements ブロックの場合は *

  • 1*、または /

    1 つの入力をもちます。要素単位モードでは、Product of Elements ブロックで記述されたとおりに入力を処理します。行列モードでは、パラメーター値が 1 または * の場合、ブロックは入力値を出力します。値が / である場合、入力は正方行列 (縮退した場合としてスカラーを含む) でなければなりません。ブロックは逆行列を出力します。詳細は、要素単位モードおよび行列モードを参照してください。

  • 整数値 > 1

    入力数は整数値で指定されます。[乗算] パラメーターで指定される要素単位モードまたは行列モードによって、入力は互いに乗算されます。詳細は、要素単位モードおよび行列モードを参照してください。

  • 2 つ以上の */ から成る単純文字列

    文字列の長さで与えられる入力数をもちます。* に相当する各入力は、乗算され、出力されます。/ に対応する各入力は除算され、出力されます。演算は、[乗算] パラメーターで指定されるように、要素単位モードまたは行列モードで行われます。詳細は、要素単位モードおよび行列モードを参照してください。

依存関係

[入力数] として * を設定し、[乗算] として [要素単位(.*)] を選択すると、[乗算範囲] パラメーターが有効になります。

コマンド ライン情報

ブロック固有のパラメーターを参照してください。

乗算

Product ブロックが要素単位モードまたは行列モードで動作するかを指定します。

設定

既定の設定: [要素単位(.*)]

[要素単位(.*)]

要素単位モードで動作します。

[行列 (*)]

行列モードで動作します。

依存関係

[要素単位(.*)] を選択し、[入力数]* に設定すると、以下のパラメーターが有効になります。

  • 乗算範囲

コマンド ライン情報

ブロック固有のパラメーターを参照してください。

乗算範囲

行列入力の乗算に影響します。

設定

既定の設定: すべての次元

すべての次元

[入力数] の値に基づいて行列のすべての要素の積、またはそれらの逆行列の積であるスカラーを出力します。

指定した次元

[次元] パラメーターの値に基づいて構成でベクトルを出力します。

依存関係

  • [乗算] として [要素単位(.*)] を選択し、[入力数]*1、または / に設定してこのパラメーターを有効にします。

  • このパラメーターを 指定した次元 に設定すると、[次元] パラメーターが有効になります。

コマンド ライン情報

ブロック固有のパラメーターを参照してください。

次元

行列入力の乗算に影響します。

設定

既定の設定: 1

最小値: 1

最大値: 2

1

入力行列の各列の要素を含むベクトルを出力します。

2

入力行列の各行の要素を含むベクトルを出力します。

ヒント

出力ベクトルの各要素は、[入力数] の値に基づいて入力行列の対応する列または行のすべての要素の積、あるいはこれらの要素の逆の積を含みます。

  • 1 または *

    列または行の要素の値の乗算

  • /

    列または行の要素の逆の乗算

依存関係

[乗算範囲] として 指定した次元 を選択してこのパラメーターを有効にします。

コマンド ライン情報

ブロック固有のパラメーターを参照してください。

サンプル時間

すべての入力が同じデータ型をもつ

すべての入力が同じデータ型をもつようにします。

設定

既定の設定: オフ

オン

すべての入力が同じデータ型をもつようにします。

オフ

すべての入力が同じデータ型をもつ必要はありません。

コマンド ライン情報

ブロック固有のパラメーターを参照してください。

出力の最小値

Simulink がチェックする出力範囲の下限値。

設定

既定の設定: [] (指定なし)

有限で実数の double のスカラー値としてこの値を指定します。

Simulink は、最小値を使って以下を行います。

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

コマンド ライン情報

パラメーター: OutMin
タイプ: 文字列
値: '[ ]'
既定の設定: '[ ]'

出力の最大値

Simulink がチェックする出力範囲の上限値。

設定

既定の設定: [] (指定なし)

有限で実数の double のスカラー値としてこの値を指定します。

Simulink は、最大値を使って以下を行います。

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

コマンド ライン情報

パラメーター: OutMax
タイプ: 文字列
値: '[ ]'
既定の設定: '[ ]'

出力データ型

出力データ型を指定します。

設定

既定の設定: 継承: 内部ルールによる継承

継承: 内部ルールによる継承

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

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

  • 単に 継承: 1 番目の入力と同じ を選択します。

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

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

継承: 逆伝播による継承

駆動ブロックのデータ型を使用します。

継承: 1 番目の入力と同じ

1 番目の入力信号のデータ型を使用します。

double

出力データ型は double です。

single

出力データ型は single です。

int8

出力データ型は int8 です。

uint8

出力データ型は uint8 です。

int16

出力データ型は int16 です。

uint16

出力データ型は uint16 です。

int32

出力データ型は int32 です。

uint32

出力データ型は uint32 です。

fixdt(1,16,0)

出力データ型は固定小数点 fixdt(1,16,0) です。

fixdt(1,16,2^0,0)

出力データ型は固定小数点 fixdt(1,16,2^0,0) です。

<data type expression>

データ型オブジェクトを使用します。たとえば、Simulink.NumericType などです。

コマンド ライン情報

「ブロック固有のパラメーター」を参照してください。

参考

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

データ型アシスタントを表示

[データ型アシスタント] を表示します。

設定

[データ型アシスタント] を使用すると、[出力データ型] パラメーターを設定できます。

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

モード

指定するデータのカテゴリを選択します。

設定

既定の設定: 継承

継承

データ型の規則の継承。[継承] を選択すると、右側にある 2 番目のメニュー/テキスト ボックスが有効になります。次の選択肢からいずれかを選択します。

  • Inherit via internal rule (既定の設定)

  • Inherit via back propagation

  • Same as first input

組み込み

組み込みのデータ型。[組み込み] を選択すると、右側にある 2 番目のメニュー/テキスト ボックスが有効になります。次の選択肢からいずれかを選択します。

  • double (既定の設定)

  • single

  • int8

  • uint8

  • int16

  • uint16

  • int32

  • uint32

固定小数点

固定小数点データ型。

データ型を評価する式。[] を選択すると、右側から 2 番目のメニュー/テキスト ボックスが有効になります。そこに式を入力することができます。

依存関係

[データ型アシスタントを表示] ボタンをクリックすると、このパラメーターが有効になります。

コマンド ライン情報

「ブロック固有のパラメーター」を参照してください。

参考

「データ型アシスタントを利用したデータ型の指定」を参照してください。

データ型オーバーライド

この信号のデータ型オーバーライド モードを指定します。

設定

既定の設定: 継承

継承

コンテキストからデータ型オーバーライド設定を継承します。コンテキストとはブロックのことで、信号を使用している Simulink の Simulink.Signal オブジェクトまたは Stateflow® チャートです。

オフ

コンテキストのデータ型オーバーライド設定を無視し、信号に対して指定された固定小数点データ型を使用します。

ヒント

個々のデータ型に対してデータ型オーバーライドをオフにする機能により、データ型オーバーライドを適用する際に、モデル内のデータ型をさらに効果的に制御できます。たとえば、このオプションを使用すると、データ型オーバーライド設定にかかわらず、データ型が下流ブロックの要件を満たすことを確認できます。

依存関係

このパラメーターは、[モード]組み込み または 固定小数点 の場合にのみ表示されます。

符号付き/なし

固定小数点データを符号付きにするか、符号なしにするかを指定します。

設定

既定の設定: 符号付き

符号付き

符号付き固定小数点データを指定します。

符号なし

符号なし固定小数点データを指定します。

依存関係

[モード]固定小数点を選択すると、このパラメーターが有効になります。

参考

詳細は、「固定小数点データ型の指定」を参照してください。

語長

量子化された整数をもつ語のビット サイズを指定します。

設定

既定の設定: 16

最小値: 0

最大値: 32

依存関係

[モード]固定小数点を選択すると、このパラメーターが有効になります。

参考

詳細は、「固定小数点データ型の指定」を参照してください。

スケーリング

オーバーフローを避け、量子化誤差を最小限に抑えるための固定小数点データのスケーリング方法を指定します。

設定

既定の設定: 最高精度

2 進小数点

2 進小数点の位置を指定します。

勾配とバイアス

勾配とバイアスを入力します。

最高精度

最高精度値を指定します。

依存関係

[モード]固定小数点を選択すると、このパラメーターが有効になります。

[2 進小数点] を選択すると、以下が有効になります。

  • 小数部の長さ

  • 最高精度のスケーリングを計算

勾配とバイアス を選択すると、以下が有効になります。

  • 勾配

  • バイアス

  • 最高精度のスケーリングを計算

参考

詳細は、「固定小数点データ型の指定」を参照してください。

小数部の長さ

固定小数点データ型の小数部の長さを指定します。

設定

既定の設定: 0

2 進小数点は正または負の整数になります。

依存関係

[スケーリング][2 進小数点] を選択すると、このパラメーターが有効になります。

参考

詳細は、「固定小数点データ型の指定」を参照してください。

勾配

固定小数点データ型の勾配を指定します。

設定

既定の設定: 2^0

任意の正の実数を指定します。

依存関係

[スケーリング]勾配とバイアス を選択すると、このパラメーターが有効になります。

参考

詳細は、「固定小数点データ型の指定」を参照してください。

バイアス

固定小数点データ型のバイアスを指定します。

設定

既定の設定: 0

任意の実数を指定します。

依存関係

[スケーリング]勾配とバイアス を選択すると、このパラメーターが有効になります。

参考

詳細は、「固定小数点データ型の指定」を参照してください。

固定小数点ツールによる変更に対して出力データ型の設定をロックする

固定小数点ツールや固定小数点アドバイザーによる変更を避けるために、このブロックの出力データ型の設定をロックします。

設定

既定の設定: オフ

オン

このブロックの出力データ型設定をロックします。

オフ

固定小数点ツールや固定小数点アドバイザーがこのブロックの出力データ型の設定を変更できます。

コマンド ライン情報

パラメーター: LockScale
タイプ: 文字列
値: 'off' | 'on'
既定の設定: 'off'

参考

詳細は、「[出力データ型の設定をロックする] の使用」を参照してください。

整数丸めモード

固定小数点演算の丸めモードを指定します。

設定

既定の設定: 負方向

正方向

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

最も近い偶数方向

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

負方向

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

最も近い正の整数方向

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

最も近い整数方向

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

最も簡潔

負方向の丸めとゼロ方向の丸めのいずれかを選択し、できるだけ効率の高い丸めコードを生成します。

ゼロ方向

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

コマンド ライン情報

「ブロック固有のパラメーター」を参照してください。

参考

詳細は、「丸め」を参照してください。

整数オーバーフローで飽和

オーバーフローで飽和するかどうかを指定します。

設定

既定の設定: オフ

オン

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

たとえば、符号付き 8 ビット整数に関連付けられたオーバーフローは、-128 または 127 に飽和することができます。

オフ

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

たとえば、数 130 は符号付き 8 ビット整数 1 つに収まりきらないので、-126 にラップされます。

ヒント

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

  • 生成コードの効率を最適化する場合には、このチェック ボックスをオフにすることを検討してください。

    このチェック ボックスをオフにすると、ブロックが範囲外の信号を処理する方法を指定しすぎないようにする点でも役立ちます。詳細は、「信号範囲のエラーのチェック」を参照してください。

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

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

コマンド ライン情報

パラメーター: SaturateOnIntegerOverflow
タイプ: 文字列
値: 'off' | 'on'
既定の設定: 'off'

特性

データ型

double | single | boolean | 整数 | 固定小数点

サンプル時間

駆動ブロックから継承

直接フィードスルー

あり

多次元信号

あり

可変サイズの信号

あり

ゼロクロッシング検出

なし

コード生成

あり

R2006a より前に導入

この情報は役に立ちましたか?