ホームに戻る
 FIR と IIR の覚え書き

FIR FILTER

まずフィルタの長さを決定する。
-フィルタの長さの前回の入力が必要である

out[n]=in[0]*h[0]+in[-1]*h[1]+in[-2]*h[2]+... (フィルタの長さまで続ける)

Fsa:サンプル周波数
Fp:ゲイン1が保障される周波数
Fs:カットする周波数
A:FpからFsになるまでの減衰率(0-100)

Wp=(Fp/Fsa)(PAI)
Ws=(Fs/Fsa)(PAI)
N=(A-8)/(2.285(Ws-Wp))

B=0.1102(A-8.7)                    50<A
B=0.5842((A-21)^0.4)+0.07886(A-21) 21<=A<=50
B=0                                a<21

w[n]=I[B(1-((2n/N)^2)^(1/2))]/I[B]
I[n]=1+(((n/2)^1)/1!)^2+(((n/2)^2)/2!)^2+(((n/2)^3)/3!)^2+.... (20くらいまで続ける)

LPF
Wc=(Ws+Wp)/2
h[n]=((sin(Wc)*n)/((PAI)*n))w[n]

HPF
Wc=(PAI)-(Ws+Wp)/2
h[n]=((-1)^n)((sin(Wc)*n)/((PAI)*n))w[n]

IIR Filter

y[n]=(b0/a0)*x[n]+(b1/b0)*x[n-1]+(b2/b0)*x[n-2]-(a1/a0)*y[n-1]-(a2/a0)*y[n-2]

Fs:サンプル周波数
f:パラメータ周波数
Ga:ゲイン
Q:Q(1〜20くらいか?)

A=10^(Ga/40)
w=2(PAI)f/Fs

LPF
a0=1+sin(w)/2Q
a1=-2cos(w)
a2=1-sin(w)/2Q
b0=(1-cos(w))/2
b1=1-cos(w)
b2=(1-cos(w))/2

HPF
a0=1+sin(w)/2Q
a1=-2cos(w)
a2=1-sin(w)/2Q
b0=(1+cos(w))/2
b1=1-cos(w)
b2=(1+cos(w))/2

BPF
a0=1+sin(w)/2Q
a1=-2cos(w)
a2=1-sin(w)/2Q
b0=sin(w)/2Q
b1=0
b2=-sin(w)/2Q

NOTCH
a0=1+sin(w)/2Q
a1=-2cos(w)
a2=1-sin(w)/2Q
b0=1
b1=-2cos(w)
b2=1

EQ
a0=1+(sin(w)/2Q)/A
a1=-2cos(w)
a2=1-(sin(w)/2Q)/A
b0=1+(sin(w)/2Q)*A
b1=-2cos(w)
b2=1-(sin(w)/2Q)*A

LOWSHELVE
a0=(A+1)+(A-1)cos(w)+((A/Q)^(1/2))sin(w)
a1=-2((A-1)+(A+1)cos(w))
a2=(A+1)+(A-1)cos(w)-((A/Q)^(1/2))sin(w)
b0=A((A+1)-(A-1)cos(w)+((A/Q)^(1/2))sin(w))
b1=2A((A-1)-(A+1)cos(w))
b2=A((A+1)-(A-1)cos(w)-((A/Q)^(1/2))sin(w))

HIGHSHELVE
a0=(A+1)+(A-1)cos(w)+((A/Q)^(1/2))sin(w)
a1=2((A-1)+(A+1)cos(w))
a2=(A+1)+(A-1)cos(w)-((A/Q)^(1/2))sin(w)
b0=A((A+1)+(A-1)cos(w)+((A/Q)^(1/2))sin(w))
b1=-2A((A-1)+(A+1)cos(w))
b2=A((A+1)+(A-1)cos(w)-((A/Q)^(1/2))sin(w))

inserted by FC2 system