音遊び日記

ハードウェアとソフトウェアの両面から”音”で遊んだ事を備忘録として書いています。

双二次フィルタのフィルタ係数と周波数特性の関係

1. はじめに

 2次のIIRフィルタを双二次フィルタと呼び、設計が容易であるためよく使用されます。双二次フィルタのフィルタ係数を変化させた時、周波数特性がどう変化するのか調べてみました。これを調べてどうにかするわけでは無いけど、単純に気になったので試してみた、そんな記事です。

 特性の計算にはpythonの信号処理向けライブラリであるscipyのsignalを使います。フィルタ係数の計算はこの資料を参考にしました。

https://wsignal.sakura.ne.jp/onsei2007/kousaku/column.pdf

 

2. 双二次フィルタ

 双二次フィルタの伝達関数は以下のようになります。

f:id:hsy221:20200223174410p:plain

多くの場合はa0で正規化した以下の形で使用されます。

f:id:hsy221:20200223174442p:plain

ブロック図で表すとこうなります。

f:id:hsy221:20200223174606p:plain

 

 

3. フィルタ係数と周波数特性

ベースとするフィルタ特性は以下の通り。各フィルタ係数を1.01倍もしくは1.01で割ってそれぞれどんな周波数特性に変化するか調べてみました。1.01という数字に特に意味はありません、色々試した結果一番グラフとして見やすかったからこの数字にしました。

f:id:hsy221:20200223180135p:plain

ピーキングタイプのフィルタ係数計算式(上述参考サイトより抜粋)

f:id:hsy221:20200223192149p:plain

f:id:hsy221:20200223192215p:plain

フィルタ係数の計算値

a0 1.00000000
a1 -1.92114258
a2 0.93750000
b0 1.09667968
b1 -1.92114258
b2 0.84057617

 ■フィルタ係数を一つだけ変更

f:id:hsy221:20200223190937p:plain

・中心周波数より広域の特性を変更する事はない

・フィルタ係数の分子(b成分)によってピークは変わらない(式には ωが含まれるのになぜだろうか)

・偶数次の係数(0と2)は同じような変化をする。次数を上げれば奇数次も同じような変化をするのか?

 

■二つ以上のフィルタ係数を変更

f:id:hsy221:20200223191010p:plain

・分母(a)を2倍すれば全体が半分(-6dB)に、分子(b)を2倍すれば全体が2倍(+6dB)になる。これは伝達関数を考えれば当然の結果。

・分母と分子(aとb)で対になる係数を変化させると平坦域に変化を与えない。