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

Convolution

2 つの入力の畳み込み

ライブラリ

信号処理

dspsigops

説明

Convolution ブロックは N 次元入力配列 u の最初の次元と N 次元入力配列 v の最初の次元を畳み込みます。このブロックは、列ベクトルと N 次元入力配列の最初の次元の畳み込みも個別に行うことができます。

DSP System Toolbox ブロックでの畳み込み

畳み込みの一般的な方程式は次のようになります。

y(k)=nu(nk)v(k)

この目的で使用できる DSP System Toolbox™ ブロックが 2 つあります。

  • 畳み込み

  • Discrete FIR Filter

Convolution ブロックは、すべての u と h が各 Simulink® タイム ステップで使用可能であると仮定し、それぞれのタイム ステップで畳み込み全体を計算します。

Discrete FIR Filter ブロックは、各タイム ステップですべての h を使用できる状況で信号の畳み込みを行うために使用できますが、u はシミュレーションの進行につれて生成されるシーケンスです。Discrete FIR Filter ブロックを使用すると、畳み込みは 1 回のみ計算されます。

次の質問を使用して、ニーズに最適なブロックを決定してください。

質問回答推奨ブロック

畳み込みを何回実行する予定ですか?

多くの畳み込みを各タイム ステップごとに 1 回実行

  • Convolution ブロック

シミュレーション全体で 1 回の畳み込みを実行

  • Convolution ブロック

  • Discrete FIR Filter ブロック

入力シーケンスの長さはどれくらいですか?

両方のシーケンスが有限の長さをもつ

  • Convolution ブロック

  • Discrete FIR Filter ブロック

片方のシーケンスが無限 (事前に決定されていない) の長さをもつ

  • Discrete FIR Filter ブロック

入力にスカラー ストリームがいくつありますか?

なし

  • Convolution ブロック

  • Discrete FIR Filter ブロック

1 つまたは両方

  • Convolution ブロックが後に続く Buffer ブロック

  • Discrete FIR Filter ブロック

2 つの N 次元配列の畳み込み

ブロックは常に最初の次元に沿って 2 つの N 次元入力配列の畳み込みを計算します。両方の入力が N 次元配列の場合、最初の次元のサイズは異なっても構いませんが、他のすべての次元のサイズは同じでなければなりません。たとえば、u が Mu x N x P の配列で、v が Mv x N x P の配列の場合、出力は (Mu+Mv–1) x N x P の配列となります。

Convolution ブロックへの入力が Mu 行 N 列の行列 u と Mv 行 N 列の行列 v の場合、出力 y は (Mu+Mv–1) 行 N 列の行列となり、その j 番目の列には次の要素があります。

yi,j=k=0max(Mu,Mv)1uk,jv(ik),j0i(Mu+Mv2)

入力 uv は、有効な範囲外でインデックス化される場合はゼロになります。両方の入力が実数の場合は出力も実数となり、1 つまたは両方の入力が複素数の場合は出力も複素数となります。

列ベクトルと N 次元配列の畳み込み

1 つの入力が列ベクトルで、もう一方が N 次元配列の場合、ブロックはベクトルと N 次元入力配列の最初の次元を個別に畳み込みます。たとえば、u が Mu 行 1 列の列ベクトル、v が Mv 行 N 列の行列の場合、出力は (Mu+Mv–1) 行 N 列の行列となり、その j 番目の列には次の要素があります。

yi,j=k=0max(Mu,Mv)1ukv(ik),j0i(Mu+Mv2)

2 つの列ベクトルの畳み込み

Convolution ブロックは 2 つの列ベクトルの入力も受け入れます。u と v の長さが Mu と Mv の列ベクトルの場合、Convolution ブロックはベクトルの畳み込みを実行します。

yi=k=0max(Mu,Mv)1ukv(ik)0i(Mu+Mv2)

出力は (Mu+Mv–1) 行 1 列の列ベクトルになります。

固定小数点データ型

次の図では、Convolution ブロック内で固定小数点信号に使用されるデータ型を説明します (時間領域のみ)。

次の節で説明されているように、乗算出力、アキュムレータおよび出力データ型をブロック ダイアログで設定することができます。

入力が実数の場合、乗算器の出力は乗算出力のデータ型になります。入力が複素数の場合、乗算の結果はアキュムレータのデータ型になります。実行される複素数の乗算の詳細については、Multiplication Data Typesを参照してください。

メモ

1 つまたは両方の入力が符号付き固定小数点信号の場合、すべての内部ブロックのデータ型は符号付き固定小数点になります。内部ブロックのデータ型は、"両方の" 入力が符号なし固定小数点信号の場合にのみ、符号なし固定小数点になります。

パラメーター

[メイン] タブ

Computation domain

ブロックが畳み込みを計算する領域を設定します。

  • Time — ブロックは時間領域で計算を行い、これによりメモリ使用量が最小化されます。

  • Frequency — ブロックは周波数領域で計算を行い、入力の長さによっては時間領域で計算するよりも必要な計算量が少なくなる可能性があります。

  • Fastest — ブロックは領域で計算を行い、それにより計算数が最小限になります。

[データ型] タブ

メモ

固定小数点信号は時間領域でのみサポートされます。このペインでパラメーターを使用するには、[メイン] ペインの [Computation domain] パラメーターで [Time] が選択されていることを確認してください。

丸めモード

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

メモ

[丸めモード][整数オーバーフローで飽和] の設定は、以下のすべての条件が存在する場合、数値結果には影響しません。

  • [乗算出力][Inherit: Inherit via internal rule] である

  • [アキュムレータ][Inherit: Inherit via internal rule] である

  • [出力][Inherit: Same as accumulator] である

これらのデータ型設定を使用すると、ブロックは完全精度モードで効率的に動作します。

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

このパラメーターをオンにすると、ブロックは固定小数点演算の結果を飽和させます。このパラメーターをオフにすると、ブロックは固定小数点演算の結果をラップします。saturate および wrap の詳細については、固定小数点演算のオーバーフロー モードを参照してください。

メモ

[丸めモード][整数オーバーフローで飽和] のパラメーターは、以下のすべての条件に一致する場合、数値結果には影響しません。

  • [乗算出力] のデータ型が [Inherit: Inherit via internal rule] である。

  • [アキュムレータ] のデータ型が [Inherit: Inherit via internal rule] である。

これらのデータ型設定を使用すると、ブロックは完全精度モードで動作します。

乗算出力

乗算出力のデータ型を指定します。このブロックの乗算出力データ型の使い方を示す図は、固定小数点データ型およびMultiplication Data Typesを参照してください。以下を指定可能です。

  • データ型継承ルール (例: [Inherit: Inherit via internal rule]このルールの詳細は、Inherit via Internal Ruleを参照してください。

  • 有効なデータ型として評価する式 (例: fixdt([],16,0))

[データ型アシスタントを表示] ボタン をクリックして、[乗算出力] パラメーターの設定を行うための [データ型アシスタント] を表示します。

詳細については、データ型アシスタントを利用したデータ型の指定 (Simulink)を参照してください。

アキュムレータ

アキュムレータのデータ型を指定します。このブロックのアキュムレータ データ型の使い方を示す図は、固定小数点データ型を参照してください。このパラメーターは以下のように設定できます。

  • データ型継承ルール (例: [Inherit: Inherit via internal rule]このルールの詳細は、Inherit via Internal Ruleを参照してください。

  • 有効なデータ型として評価する式 (例: fixdt([],16,0))

[データ型アシスタントを表示] ボタン をクリックして、[アキュムレータ] パラメーターの設定を行うための [データ型アシスタント] を表示します。

詳細については、データ型アシスタントを利用したデータ型の指定 (Simulink)を参照してください。

出力

出力データ型を指定します。このブロックの出力データ型の使い方を示す図は、固定小数点データ型を参照してください。以下を指定可能です。

  • データ型継承ルール (例: [Inherit: Same as accumulator])

  • 有効なデータ型として評価する式 (例: fixdt([],16,0))

[データ型アシスタントを表示] ボタン をクリックして、[出力] パラメーターの設定を行うための [データ型アシスタント] を表示します。

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

Output Minimum

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

  • シミュレーション範囲のチェック (信号範囲 (Simulink)を参照)

  • 固定小数点データ型の自動スケーリング

Output Maximum

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

  • シミュレーション範囲のチェック (信号範囲 (Simulink)を参照)

  • 固定小数点データ型の自動スケーリング

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

ブロック マスクで指定するデータ型が固定小数点ツールによってオーバーライドされないようにするには、このパラメーターを選択します。

サポートされているデータ型

端子サポートされているデータ型

入力

  • 倍精度浮動小数点

  • 単精度浮動小数点

  • 固定小数点 (符号付きおよび符号なし)

  • 8、16、32 ビット符号付き整数

  • 8、16、32 ビット符号なし整数

出力

  • 倍精度浮動小数点

  • 単精度浮動小数点

  • 固定小数点 (符号付きおよび符号なし)

  • 8、16、32 ビット符号付き整数

  • 8、16、32 ビット符号なし整数

拡張機能

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

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

参考

関数

ブロック

R2006a より前に導入