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 より前に導入