Main Content

dfilt.fftfir

離散時間オーバーラップ加算 FIR フィルター

構文

Hd = dfilt.fftfir(b,len)
Hd = dfilt.fftfir(b)
Hd = dfilt.fftfir

説明

このオブジェクトでは、ブロック FIR フィルター処理のオーバーラップ加算法が使用されます。この方法は、ストリーミング データに対して非常に効率的です。

Hd = dfilt.fftfir(b,len) では、分子係数が b、ブロック長 len の離散時間 FFT FIR フィルター Hd が返されます。ブロック長は、各オーバーラップ加算計算で使用する入力点数です。

Hd = dfilt.fftfir(b) では、分子係数が b、ブロック長 len=100 の離散時間 FFT FIR フィルター Hd が返されます。

Hd = dfilt.fftfir では、分子 b=1、ブロック長 len=100 の既定の離散時間 FFT FIR フィルター Hd が返されます。このフィルターでは、入力が変化せずそのまま出力されます。

メモ

dfilt.fftfir を使用してデータをフィルター処理する場合、フィルターは常にオブジェクトのブロック長 len の整数倍に等しい長さの信号のセグメントに対して作用します。入力信号長がブロック長の整数倍に等しくない場合、信号長はこの要件を満たす最も近い整数になるように切り詰められます。PersistentMemory プロパティが true に設定されている場合、次回そのフィルター オブジェクトを使うときには残りの信号サンプルがその次の入力の先頭に追加されます。結果として得られる FFT の点数は、(フィルター長 + ブロック長 - 1) です。フィルターは、FFT 点数が 2 のべき乗であるときに最も効率的です。

fftfir では、以下のように表現される、オーバーラップ加算ブロック処理アルゴリズムが使用されます。

ここで、len はブロック長であり、M は分子 - 1 の長さ (length(b)-1)、すなわち状態数です。各畳み込みの出力は、入力ブロックよりも (length(b)-1) サンプルの裾 (tail) の分長いブロックです。これらの裾は隣のブロックにオーバーラップし、それに追加されます。dfilt.fftfir で報告される状態は、最後の畳み込みの裾です。

30 次ローパス等リップル設計からの係数を使用して、FFT FIR 離散時間フィルターを作成します。

b = firpm(30,[0 .1 .2 .5]*2,[1 1 0 0]);
Hd = dfilt.fftfir(b)

フィルターで使用する周波数領域係数を表示するには、以下のコマンドを使います。

freq_coeffs = fftcoeffs(Hd);

バージョン履歴

R2006a より前に導入