IIR フィルタ

ユーザー定義の IIR フィルタ (Infinite Impulse Response filter) を音声に適用します。

●フィルタの最大次数は 99 次です。係数名 (a0〜a99, b0〜b99) の定義は以下の形です。

H(z) は伝達関数、x はフィルタへの入力、y は出力

●係数は係数名と数値を等号で結んで記述します。一行当りー式を記述します。大文字と小文字の区別はしませんので a0 と A0 は同じ名前として扱われます。数値は 10, 20.0, 3.0e1 のような記述ができます。等号の前後などに半角スペースがある場合は読み飛ばされます。

例:
a0 = 1
a1 = 0.5
a2 = 2.0e-1

●b0 が記述されていない場合は b0 = 1 と判断し、b0 以外の係数で記述されていないものは、値が 0 であると判断します。

●右辺には計算式を記述することもできます。

例:
a0 = 1 + 2
a1 = (1.0 - 2.0) * 3.0 / 4.0
a2 = 2.0^(-3)

演算子 優先度 結合
^ (べき乗)


左から右
- (符号) (単項演算子)
* (乗算)
/ (除算)
左から右
+ (加算)
- (減算)

a / b * c は (a / b) * c と同じです。a^b^c は (a^b)^c と同じです。

1/√2 を 2^-0.5 と書くとエラーになるので 2^(-0.5) と書く必要があります。

●行の始めの文字が # の行はコメント行です。# の前に半角スペースがあっても構いません。

●係数名以外のシンボルを係数名と同様に定義し、計算式に含めることができます。

例:
# moving average
g = 1/5
a0 = g
a1 = g
a2 = g
a3 = g
a4 = g