フィルタ設計演習
零点直接配置方式により、
Multirate Filtering: Introductionに示したマルチレートシステムのためのFIRフィルタを設計して下さい。
インパルス応答長
N
NのFIRフィルタの伝達関数は次式に示す
z-1
z
-1
の多項式であり、この多項式が
N-1
N
1
個の根により因数分解できることを思い出して下さい。
Hz=
h
0
+
h
1
z-1+
h
2
z-2+⋯=
z
1
-z-1
z
2
-z-1
z
3
-z-1⋯
H
z
h
0
h
1
z
-1
h
2
z
-2
⋯
z
1
z
-1
z
2
z
-1
z
3
z
-1
⋯
(1)
この関係式を用いて、低域通過フィルタ(LPF:low pass filter)を設計して下さい(このフィルタは、マルチレートシステムにおけるアンチエリアジング・フィルタおよびイメージ除去フィルタとして利用できます)。ただし、以下に示す12個の複素零点
±3π8
±
3
8
,
±π2
±
2
,
±5π8
±
5
8
,
±3π4
±
3
4
,
±7π8
±
7
8
および
±π
±
を単位円上に配置するものとします。ここで設計したフィルタは、FIR1とFIR3の両方のフィルタとして利用できます。間引き後のレートで動作するFIR2は、
±π4
±
4
および
±3π4
±
3
4
からなる単位円上に等間隔に配置した4つの零点を用いて下さい。また、これらのフィルタのゲインがいかなる周波数においても1を超えないように、上記の手順により算出したフィルタ係数の大きさを必ずスケーリングして下さい。
上記で示した零点配置を有するフィルタのフィルタ係数値を算出するMATLABスクリプトを書き、フィルタを設計して下さい。MATLABのpoly関数は、この作業でとても役に立ちます。MATLABのコマンドウインドウでhelp polyとタイプすると、poly関数の説明を参照できます。
フィルタの係数値が算出できたら、MATLABのfreqz関数を用いることにより設計したフィルタの周波数特性を表示して下さい。フィルタ係数値をスケーリングする前の段階では、設計したフィルタは大きな利得を有していることがわかるかと思います。フィルタ係数値を適切な値で割ることにより、フィルタの利得の最大値が確実に1以下になるようにして下さい。設計したフィルタの振幅特性は、z平面での零点の配置から予想される結果となっているでしょうか?