■窓関数を乗算してリプルを小さくする

 図2-78(a)ではLPFの
振幅特性を周波数0からFsまでN個サンプリングしていました。この際、例えばNの値が無限大、すなわちサンプル数が無限個であれば、その後の逆DFTによってインパルス応答は図2-82(a)のようになり、無限に続きます。このインパルス応答をフーリエ変換(DFTではない!)すると周波数特性は同図(b)のように所望の周波数特性と同一になります。


図2-82 Nが無限大なら理想的だがそうはいかない

●係数の数を制限すると特性が波打つ

 しかしNが無限大の場合はタップ数(フィルタ長)が無限大になってしまい実現不可能なので、
Nは有限の値にならざるを得ません。その場合、インパルス応答も図2-83(a)のように有限長(N個)で打ち切られた形になります。このインパルス応答をフーリエ変換すると周波数特性は同図(b)のように通過域、阻止域にリプル(ripple、小さく波打つ、さざ波)を生じます。これは逆DFTする前段階、所望の振幅特性を離散化する際、Nが小さいため各サンプルの間が開きすぎたことによります。


●窓関数でリプルを低減する

 このようにNの数が少ないほど所望の周波数特性から離れていきますが、それを低減するためには「
窓関数」が有効です。図2-83(c)はその一例で、これと同図(a)のインパルス応答(有限長)と掛け合わせると同図(d)のようになります。
 それをフーリエ変換すると同図(e)のように通過域、阻止域の
リプルが減少します




図2-83 Nが有限なら窓関数でリプルを抑える

●カイザー窓で係数の始まりと終わりの値を小さめにする

 ここで窓関数の一種、「
カイザー窓」について説明します。それは次式で与えられます。

 式2-25 カイザー窓の定義

 Lは窓関数の幅を決めるパラメータで、タップ数(フィルタ長)をNとすると、N=2L+1の関係があります。αは窓関数の形状を決定するパラメータで、いくつかのαにおいて描画すると図2-84のようになります。


    図2-84 いくつかのαにおけるカイザー窓

 またαを増大すると阻止域のサイドローブが減少します(図2-85)。また、Io(x)は0次第1種変形ベッセル関数です。これに関しての詳しい説明は省略しますが、興味のある方はラズベリーパイ用のCソースコード(コラム27で使用)を参照してください。


    図2-85 αと阻止域サイドローブの関係

●「窓関数法」によるFIRフィルタ係数の導出

 カイザー窓はこのように自由度が高いためFIRフィルタの設計によく使われます。FIRフィルタの設計手順(
窓関数法という)をまとめると次のようになります。

 @設計仕様の決定(通過/減衰域、通過/減衰量、タップ数など)
 A振幅特性の離散化
 B逆DFT
 Cインパルス応答のシフト
 D窓関数の乗算

コラム27ではラズベリーパイを使ってFIR係数を導出します。


最初のページへ


目次へ戻る