Main Content

dsp.Convolver

(削除済み) 2 つの信号の畳み込み

dsp.Convolver は削除されました。代わりに conv を使用してください。詳細については、互換性の考慮事項を参照してください。

説明

dsp.Convolver System object™ は N 次元入力配列 u の最初の次元と N 次元入力配列 v の最初の次元を畳み込みます。時間領域または周波数領域に入力を畳み込むことができます。時間領域で、オブジェクトは 1 番目の入力と 2 番目の入力を畳み込みます。周波数領域で、オブジェクトは両方の入力のフーリエ変換を乗算し、積の逆フーリエ変換を計算します。この領域で、入力の長さによっては、オブジェクトに必要な計算量が少なくなる場合があります。2 つの計算方法の詳細については、アルゴリズムを参照してください。

2 つの入力を畳み込むには、次の手順に従います。

  1. dsp.Convolver オブジェクトを作成し、そのプロパティを設定します。

  2. 関数と同様に、引数を指定してオブジェクトを呼び出します。

System object の機能の詳細については、System object とはを参照してください。

作成

説明

cnv = dsp.Convolver は、時間領域または周波数領域に 2 つの入力を畳み込むための畳み込み System object である cnv を作成します。

cnv = dsp.Convolver(Name,Value) は、指定の各プロパティが指定の値に設定された畳み込み System object、cnv を作成します。各プロパティ名を一重引用符で囲みます。

例: cnv = dsp.Convolver('Method','Frequency Domain')

プロパティ

すべて展開する

特に指定がない限り、プロパティは "調整不可能" です。つまり、オブジェクトの呼び出し後に値を変更することはできません。オブジェクトは呼び出すとロックされ、ロックを解除するには関数 release を使用します。

プロパティが "調整可能" の場合、その値をいつでも変更できます。

プロパティ値の変更の詳細については、System object を使用した MATLAB でのシステム設計を参照してください。

System object で畳み込みを計算する領域。次のいずれかに指定します。

  • 'Time Domain' –– 時間領域で畳み込みを計算します。これによりメモリ使用量が最小化されます。詳細については、時間領域の計算を参照してください。

  • 'Frequency Domain' –– 周波数領域で畳み込みを計算します。周波数領域では、入力の長さによっては必要な計算量が少なくなる場合があります。詳細については、周波数領域の計算を参照してください。

  • 'Fastest' –– 計算数が最小限になる領域で畳み込みを計算します。

メモ

固定小数点信号は時間領域でのみサポートされます。次の固定小数点プロパティを使用するには、Method'Time Domain' に設定します。

固定小数点プロパティ

固定小数点演算に完全精度ルールを使用するフラグ。次のいずれかに指定します。

  • true –– オブジェクトは、完全精度ルールを使用してすべての内部演算と出力データ型を計算します。これらの規則は、最も正確な固定長数値を提供します。このモードでは、他の固定小数点プロパティは適用されません。オブジェクト内で量子化が発生しません。必要に応じてビットが追加されて、丸めやオーバーフローが発生しないことを確実にします。

  • false –– 固定小数点データ型は個別の固定小数点プロパティ設定によって制御されます。

詳細については、Full Precision for Fixed-Point System ObjectsSet System Object Fixed-Point Propertiesを参照してください。

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

依存関係

このプロパティは、FullprecisionOverride プロパティを false に設定し、ProductDataTypeAccumulatorDataType、および OutputDataType プロパティの少なくとも 1 つのプロパティを 'Full precision' 以外のオプションに設定している場合に適用されます。

固定小数点演算のオーバーフロー アクション。次のいずれかに指定します。

  • 'Wrap' –– オブジェクトはその固定小数点演算の結果をラップします。

  • 'Saturate' –– オブジェクトはその固定小数点演算の結果を飽和します。

オーバーフロー アクションの詳細については、固定小数点演算のオーバーフロー モードを参照してください。

依存関係

このプロパティは、FullprecisionOverride プロパティを false に設定し、ProductDataTypeAccumulatorDataType、および OutputDataType プロパティの少なくとも 1 つのプロパティを 'Full precision' 以外のオプションに設定している場合に適用されます。

dsp.Convolver オブジェクトの乗算操作出力のデータ型。次のいずれかを指定します。

  • 'Full precision' –– オブジェクトは、完全精度ルールを使用して乗算出力のデータ型を計算します。これらの規則は、最も正確な固定長数値を提供します。量子化は行われません。必要に応じてビットが追加されて、丸めやオーバーフローが発生しないことを確実にします。

  • 'Custom' –– 乗算出力のデータ型は、CustomProductDataType プロパティを使ってカスタムの数値型に指定します。丸め方法とオーバーフロー アクションは、RoundingMethod プロパティと OverflowAction プロパティで指定します。

  • 'Same as first input' –– オブジェクトは乗算出力データ型を最初の入力のデータ型と同じになるように指定します。

乗算出力データ型の詳細については、固定小数点のセクションを参照してください。

乗算出力データ型。語長が 32 で小数部の長さが 30 の自動符号付きの数値型に指定します。

依存関係

このプロパティは ProductDataType'Custom' に設定した場合にのみ適用されます。

dsp.Convolver オブジェクトの累積操作出力のデータ型。次のいずれかを指定します。

  • 'Full precision' –– オブジェクトは、完全精度ルールを使用してアキュムレータ データ型を計算します。これらの規則は、最も正確な固定長数値を提供します。量子化は行われません。必要に応じてビットが追加されて、丸めやオーバーフローが発生しないことを確実にします。

  • 'Custom' –– アキュムレータのデータ型は、CustomAccumulatorDataType プロパティを使ってカスタムの数値型に指定します。丸め方法とオーバーフロー アクションは、RoundingMethod プロパティと OverflowAction プロパティで指定します。

  • 'Same as first input' –– オブジェクトはアキュムレータのデータ型を最初の入力のデータ型と同じになるように指定します。

  • 'Same as product' –– オブジェクトはアキュムレータのデータ型を乗算データ型と同じになるように指定します。

アキュムレータ データ型の詳細については、固定小数点のセクションを参照してください。

アキュムレータ データ型。語長が 32 で小数部の長さが 30 の自動符号付きの数値型に指定します。

依存関係

このプロパティは AccumulatorDataType'Custom' に設定した場合にのみ適用されます。

dsp.Convolver オブジェクトの出力のデータ型。次のいずれかとして指定します。

  • 'Same as accumulator' –– オブジェクトは出力データ型をアキュムレータ データ型と同じになるように指定します。アキュムレータ データ型の詳細については、AccumulatorDataTypeプロパティを参照してください。

  • 'Custom' –– 出力データ型は、CustomOutputDataType プロパティを使ってカスタムの数値型に指定します。丸め方法とオーバーフロー アクションは、RoundingMethod プロパティと OverflowAction プロパティで指定します。

  • 'Same as first input' –– オブジェクトは出力データ型を最初の入力のデータ型と同じになるように指定します。

  • 'Same as product' –– オブジェクトは出力データ型を乗算データ型と同じになるように指定します。

出力データ型の詳細については、固定小数点のセクションを参照してください。

出力データ型。語長が 16 で小数部の長さが 15 の自動符号付きの数値型に指定します。

依存関係

このプロパティは OutputDataType'Custom' に設定した場合にのみ適用されます。

使用法

説明

cnvOut = cnv(input1, input2) は 2 つの入力 input1input2 をその最初の次元に沿って畳み込み、畳み込まれた出力 cnvOut を返します。

入力引数

すべて展開する

最初のデータ入力。ベクトル、行列または N 次元配列として指定します。入力が行列または配列の場合、最初の次元を除き、両方の入力のすべての次元が同じでなければなりません。

例: ones(10,3,2)

データ型: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32 | fi
複素数のサポート: あり

2 番目のデータ入力。ベクトル、行列または N 次元配列として指定します。入力が行列または配列の場合、最初の次元を除き、両方の入力のすべての次元が同じでなければなりません。

例: randn(4,3,2)

データ型: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32 | fi
複素数のサポート: あり

出力引数

すべて展開する

2 つの入力の畳み込まれた出力。ベクトル、行列または N 次元配列として返されます。

  • 両方の入力が N 次元配列の場合、最初の次元のサイズは異なっても構いませんが、他のすべての次元のサイズは同じでなければなりません。たとえば、u が Mu x N x P の配列で、v が Mv x N x P の配列の場合、出力は (Mu+Mv–1) x N x P の配列となります。

  • 1 つの入力が列ベクトルで、もう一方が N 次元配列の場合、オブジェクトはベクトルと N 次元入力配列の最初の次元を個別に畳み込みます。たとえば、u が Mu 行 1 列のベクトルで、v が MvN 列の行列の場合、出力は (Mu+Mv–1) 行 N 列の行列になります。

  • u と v の長さが Mu と Mv の列ベクトルの場合、オブジェクトはベクトルの畳み込みを実行します。出力は (Mu+Mv–1) 行 1 列の列ベクトルになります。

両方の入力が実数の場合、出力は実数になります。一方または両方の入力が複素数の場合、出力は複素数になります。

データ型: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32 | fi
複素数のサポート: あり

オブジェクト関数

オブジェクト関数を使用するには、System object を最初の入力引数として指定します。たとえば、obj という名前の System object のシステム リソースを解放するには、次の構文を使用します。

release(obj)

すべて展開する

stepSystem object のアルゴリズムの実行
releaseリソースを解放し、System object のプロパティ値と入力特性の変更を可能にします。
resetSystem object の内部状態のリセット

すべて折りたたむ

dsp.Convolver オブジェクトを作成します。

conv = dsp.Convolver
conv = 
  dsp.Convolver with properties:

    Method: 'Time Domain'

  Show all properties

2 つの四角形シーケンスを畳み込みます。

x = ones(10,1);
y = conv(x,x);

結果の畳み込まれたシーケンス (三角形のシーケンス) をプロットします。

plot(y)

詳細

すべて展開する

アルゴリズム

すべて展開する

拡張機能

バージョン履歴

R2012a で導入

すべて展開する

R2023a: dsp.ConvolverSystem object は削除済み

dsp.Convolver System object は削除されました。代わりに関数 conv を使用してください。

コードの更新

次の表は、関数 conv を使用するように既存のコードを更新する方法を示しています。

非推奨の使用方法推奨される代替案
cv = dsp.Convolver;
x = ones(10,1);
yobj = cv(x,x);
yfn = conv(x,x);
isequal(yobj,yfn)
ans =

  logical

   1

コードを実行し、関数 plot を使用してベクトル yobj および yfn をプロットします。プロットが一致していることを確認します。

参考

関数

ブロック