Signal Processing Toolbox    
fftfilt

オーバラップ加算法を使ったFFTベースFIRフィルタリング

表示

詳細

fftfiltは、FIRフィルタのみに機能する周波数領域のフィルタリング手法で、効率的なFFTベースのオーバラップ加算法を使ってデータをフィルタ処理します。

y = fftfilt(b,x) は、係数ベクトルbによって記述されるフィルタでベクトルxのデータをフィルタ処理し、データベクトルyを出力します。fftfiltが実行する演算は、差分方程式により時間領域内で、つぎのように表されます。

これと等価な表現は、z変換、または、周波数領域表現で、つぎのように表されます。

デフォルトでは、fftfiltは効率的な実行時間を保証するFFTの長さとデータブロック長を選択します。

y = fftfilt(b,x,n) は、FFT長nfft = 2^nextpow2(n)とデータブロック長(nfft - length(b) + 1)を使用します。

fftfiltは、実数入力と複素数入力のどちらに対しても機能します。

例題

fftfiltfilterから得られる結果が等価であることを示します。

アルゴリズム

fftfilt は、fftを使って、オーバラップ加算法(参考文献[1])を実現します。これは、入力データ列をブロックとして連続的に抜き出し、周波数領域に変換し、フィルタ処理を行い、組み合わせるものです。fftfiltは、入力データ列xを長さLのデータブロックに分割します。

そして、つぎの操作により、フィルタbと各ブロックのコンボリューションを行います。

ここで、nfftはFFTの長さです。fftfiltは、結果を(nb-1)点ずつ重ね合せ、その和を計算します。ここで、nbはフィルタの長さです。

fftfiltは、ユーザがFFTの長さnを設定するかどうか、またフィルタや信号の長さによって、種々の方法で、主要パラメータのLnfftを選択します。nの値(FFTの長さを決定する)が設定されなければ、fftfiltは、これらの主要パラメータを自動的に選択します。

nに値を設定すると、fftfiltは、FFTの長さnfft2^nextpow2(n)に、データブロック長をnfft - length(b) + 1に選択します。nlength(b)未満の場合、fftfiltは、nlength(b)に設定します。

参考
conv
コンボリューションおよび多項式乗算
filter
巡回型(IIR)または非巡回型(FIR)フィルタによるデータのフィルタリング
filtfilt
ゼロ位相ディジタルフィルタリング

参考文献

[1] Oppenheim, A.V., and R.W. Schafer, Discrete-Time Signal Processing, Prentice-Hall, 1989.


 fft2 fftshift