双二次フィルタのフィルタ係数と周波数特性の関係
1. はじめに
2次のIIRフィルタを双二次フィルタと呼び、設計が容易であるためよく使用されます。双二次フィルタのフィルタ係数を変化させた時、周波数特性がどう変化するのか調べてみました。これを調べてどうにかするわけでは無いけど、単純に気になったので試してみた、そんな記事です。
特性の計算にはpythonの信号処理向けライブラリであるscipyのsignalを使います。フィルタ係数の計算はこの資料を参考にしました。
https://wsignal.sakura.ne.jp/onsei2007/kousaku/column.pdf
2. 双二次フィルタ
双二次フィルタの伝達関数は以下のようになります。
多くの場合はa0で正規化した以下の形で使用されます。
ブロック図で表すとこうなります。
3. フィルタ係数と周波数特性
ベースとするフィルタ特性は以下の通り。各フィルタ係数を1.01倍もしくは1.01で割ってそれぞれどんな周波数特性に変化するか調べてみました。1.01という数字に特に意味はありません、色々試した結果一番グラフとして見やすかったからこの数字にしました。
ピーキングタイプのフィルタ係数計算式(上述参考サイトより抜粋)
フィルタ係数の計算値
a0 | 1.00000000 |
a1 | -1.92114258 |
a2 | 0.93750000 |
b0 | 1.09667968 |
b1 | -1.92114258 |
b2 | 0.84057617 |
■フィルタ係数を一つだけ変更
・中心周波数より広域の特性を変更する事はない
・フィルタ係数の分子(b成分)によってピークは変わらない(式には ωが含まれるのになぜだろうか)
・偶数次の係数(0と2)は同じような変化をする。次数を上げれば奇数次も同じような変化をするのか?
■二つ以上のフィルタ係数を変更
・分母(a)を2倍すれば全体が半分(-6dB)に、分子(b)を2倍すれば全体が2倍(+6dB)になる。これは伝達関数を考えれば当然の結果。
・分母と分子(aとb)で対になる係数を変化させると平坦域に変化を与えない。