Signal Processing Toolbox    

周波数領域フィルタの実現

時間領域と周波数領域との間には双対性があるため、任意の演算を、いずれの領域で行うことができます。通常、特定の演算には、いずれか一方の領域の方が便利ですが、いずれの領域でも常にある演算を行うことができます。

周波数領域で一般的なIIRフィルタ処理を行うには、入力列の離散フーリエ変換(DFT)にフィルタの分子と分母の各DFTの比を乗算します。

これは、filterと同じ演算結果となりますが、開始時の過渡状態(エッジ効果)が異なります。データ列が長い場合には、この計算法はきわめて非効率的です。その理由は、入力データのフーリエ係数の長さと同じにするためにフィルタ係数のFFT演算に多くのゼロが付加されることや、データ点nが増加するに連れてFFTアルゴリズムの効率が低下することです。

ただし、FIRフィルタの場合には、長い列を短い列に分割して、計算上効率的なFFT長にすることができます。関数

は、オーバラップ加算法(本章の最後にある参考文献[1]を参照)を用いて、長いデータ列を適切な長さのデータ列に分割し、FFTを行い、重ね合わせることにより、フィルタ処理を行ないます。その出力は、filter(b,1,x)と等しくなります。


 非因果的ゼロ位相フィルタの実現 インパルス応答