双一次z変換によるIIRフィルタの設計を行う。フィルタは下記の仕様を満たすよう設計するとする。
サンプリング間隔 T=0.01
通過域エッジ周波数 20Hz
通過域偏差 0.2
阻止域エッジ周波数 30Hz
阻止域偏差 0.1
今回は、バタワース型のプロトタイプローパスフィルタを作成し、
ローパス→ローパス変換後、双1次z変換により、ディジタルフィルタの伝達関数を設計、周波数特性を評価する。
手順1. s-z変換⬇で露見した周波数のひずみを解消するために、
https://sites.google.com/site/k3ijogadget/digital-filter/design-digital-filter-by-s-z-translation
ブリワーピングによる周波数の修正を行う。(あらかじめアナログフィルタの仕様をひずみ分を考慮した形に修正する)
......式(1)
......式(2)
式(1)は、通過域のエッジ周波数(アナログ)、式(2)は、遮断域のエッジ周波数(アナログ)を指す。
次に、式(1)の通過域のエッジ周波数で、それぞれ式(1)、式(2)を正規化する。
結果、下式を得る。
......式(3)
......式(4)
手順2. アナログフィルタの伝達関数設計
バタワース、チェビシェフ、逆チェビシェフ、連立チェビシェフの内、一つ特性を選択し、
プロトタイプローパスフィルタを作成する。
今回は、バタワース特性を選択する。
ついで、下記の変換のうち一つを行い所定のフィルタパス特性をもつフィルタ伝達関数を得る。
ローパス→ローパス変換
ローパス→ハイパス変換
ローパス→バンドパス変換
ローパス→ハイパス→バンドパス変換(バンドエリミネートフィルタが作成)
今回は、ローパス→ローパス変換を行う。
......式(5)
手順3. 双1次z変換によって、ディジタルフィルタの伝達関数を設計する。
......式(6)
上記を踏まえて、scilabでの設計と評価を行う。
scilabコマンド
-->T=0.01;sfrq=1/T;
-->fp=20;dp=0.2;fs=30;ds=0.1;
-->wp=2/T*tan(2*%pi*fp*T/2);
-->ws=2/T*tan(2*%pi*fs*T/2);
-->u=2/T*(1-p)/(1+p);
-->op=1;
-->os=ws/wp;
-->gs0=ssbutt(op,dp,os,ds,'rad')
-->gs=horner(gs0,s/wp);
-->hz=zrep(horner(gs,u));
-->zspec(hz,1);
-->aspec(gs0, 0:5,'rad',2);
-->aspec(gs,0:200,'hz',3);
シュミレーション結果
ローパス→ローパス変換後、双一次z変換した最終的なディジタルフィルタの周波数特性
プロトタイプローパスフィルタの周波数特性
ローパス→ローパス周波数変換したアナログフィルタの周波数特性