FIRフィルタ設計の実際では、希望する利得特性について、離散的な周波数についてのみ与えることなる。
上図のように全ての周波数範囲(0<=Ω<2π)をN等分した各周波数での利得特性のN個のサンプル値として、下記を得る。
; k=0,1,2,...,N-1
...式(1)
ここで、FIRフィルタのインパルス応答は、下式となる。
; n=0,1,2,...,N-1
...式(2)
式(2)は、ディジタルフーリエ逆変換と呼ばれ、下式(3)で示したディジタルフーリエ変換の逆変換となる。
; k=0,1,2,...,N-1
...式(3)
離散的な周波数に対する周波数特性(利得、位相)のサンプル値に対しては、利得は偶関数、位相は奇関数になる。
以上を踏まえて
; n=0,1,2,...,N-1
...式(2)
より、M[次]までのフィルタ係数amを決定するためには、
となるように、希望する周波数特性のサンプル値の総個数N[個]を設定する必要がある。
また、希望特性のサンプル数Nを、
に選んだとき、フィルタの利得特性と希望特性は、
の周波数サンプル値で、同じ値となる。
インパルス応答からFIRフィルタの係数を求めるには、以下の関係に従う。
...式(4)
ローパス形FIRフィルタの設計
下図で示されるローパス特性を基にし、DFTを用いて6次のFIRを設計する。サンプル数N=8とする。
周波数軸上のサンプル値を次のように指定する。
; n=0,1,2,...,N-1 式(2)より、
となり、n=0,1,2,...,7に対する値を求めると、FIRフィルタのインパルス応答に相当するIDFT値が決定される。
続けて、得られたd[n]値を、式(4)のように並べ変えることで、最終的なフィルタ係数amが得られる。
scilabを用いた設計と評価
scilabコマンド
-->sfrq = 1; T=1/sfrq;tmax = 20;
-->N-8;
-->hd=[1,1,0.5,0,0,0,0.5,1];
-->dn=IDFT1(hd)
dn =
0.5
0.3017767
0
- 0.0517767
0
- 0.0517767
0
0.3017767
-->am=IDFT2(hd,6)
am =
- 0.0517767
0
0.3017767
0.5
0.3017767
0
- 0.0517767
-->ztspec(am,1)
ローパス特性の近似結果