1、fir滤波器设计的目标是找出系统的传递函数或单位冲击响应。常见的设计方法有窗函数法。
2、fir最有用的特点是它的线性相位。线性相位能够保证一个由多个频率组成的信号在通过滤波器后,信号的波形不发生变化。
3、fir滤波器的数学表示
差分方程:
y
(
n
)
=
b
0
x
(
n
)
+
b
1
x
(
n
−
1
)
+
.
.
.
.
+
b
k
x
(
n
−
k
)
=
∑
k
=
0
M
−
1
b
k
x
(
n
−
k
)
公
式
一
y(n)=b_0x(n)+b_1x(n-1)+....+b_kx(n-k)=\displaystyle\sum_{k=0}^{M-1}b_kx(n-k) \quad 公式一
y(n)=b0x(n)+b1x(n−1)+....+bkx(n−k)=k=0∑M−1bkx(n−k)公式一
单位冲击响应:
可以将输出序列写成系统的单位冲击响应h(n)和输入信号的卷积形式:
y
(
n
)
=
∑
k
=
0
M
−
1
h
(
k
)
x
(
n
−
k
)
公
式
二
y(n)=\displaystyle\sum_{k=0}^{M-1}h(k)x(n-k) \qquad 公式二
y(n)=k=0∑M−1h(k)x(n−k)公式二
fir滤波器同样能够用它的系统函数来表征:
H
(
z
)
=
∑
k
=
0
M
−
1
h
(
k
)
z
−
k
公
式
三
H(z)=\displaystyle\sum_{k=0}^{M-1}h(k)z^{-k} \qquad 公式三
H(z)=k=0∑M−1h(k)z−k公式三
由上述公式可看出,求得M个单位冲击响应系数h(k)与输入信号做卷积就能够得到系统输出。系数可以由指定期望的系统频率响应通过公式三求得。常用的是窗函数设计法。
4、使用窗函数设计线性相位fir滤波器
这种方法是先指定期望的频率响应
H
d
(
w
)
H_d(w)
Hd(w),然后求出相应的单位冲击响应
h
d
(
n
)
h_d(n)
hd(n)。实际上
H
d
(
w
)
H_d(w)
Hd(w)和
h
d
(
n
)
h_d(n)
hd(n)是傅里叶变换对关系:
H
d
(
w
)
=
∑
n
=
0
∞
h
d
(
n
)
e
−
j
w
n
h
d
(
n
)
=
1
2
π
∫
−
π
π
H
d
(
w
)
e
j
w
n
d
w
H_d(w)=\displaystyle\sum_{n=0}^{\infty}h_d(n)e^{-jwn} \\ \space \\h_d(n)=\frac{1}{2\pi}\displaystyle\int_{-\pi}^{\pi}H_d(w)e^{jwn}dw
Hd(w)=n=0∑∞hd(n)e−jwn hd(n)=2π1∫−ππHd(w)ejwndw
当指定
H
d
(
w
)
H_d(w)
Hd(w)的取值后,就可求出
h
d
(
n
)
h_d(n)
hd(n)。
理想情况下
h
d
(
n
)
h_d(n)
hd(n)是无限长的,需要将它截取一段长度M,称之为M点fir滤波器。截取M点相当于给
h
d
(
n
)
h_d(n)
hd(n)乘一个矩形窗:
w
(
n
)
=
{
1
n
=
0
,
1
,
.
.
.
,
M
−
1
0
o
t
h
e
r
s
w(n)= \begin {cases} 1 &\text n=0,1,...,M-1 \\ 0 &\text others \end {cases}
w(n)={10n=0,1,...,M−1others
于是单位冲击响应就变成:
h
(
n
)
=
h
d
(
n
)
w
(
n
)
h(n)=h_d(n)w(n)
h(n)=hd(n)w(n)
由于时域的乘积等价于频域的卷积,所以可以得到
h
(
n
)
h(n)
h(n)的频域响应函数:
H
(
w
)
=
1
2
π
∫
−
π
π
H
d
(
v
)
W
(
w
−
v
)
d
v
H(w)=\frac 1 {2\pi} \displaystyle\int_{-\pi}^{\pi}H_d(v)W(w-v)dv
H(w)=2π1∫−ππHd(v)W(w−v)dv
先看窗函数的频域响应。
矩形窗:
W
(
w
)
=
∑
n
=
0
M
−
1
1
e
−
j
w
n
=
e
−
j
w
(
M
−
1
)
2
sin
(
w
M
2
)
sin
(
w
2
)
W(w)=\displaystyle\sum_{n=0}^{M-1}1e^{-jwn}=e^{-jw\frac {(M-1)} 2}{\frac {\sin{(\frac {wM} 2})} {\sin{(\frac w 2)}}}
W(w)=n=0∑M−11e−jwn=e−jw2(M−1)sin(2w)sin(2wM)
幅度响应:
∣
W
(
w
)
∣
=
∣
sin
(
w
M
2
)
sin
(
w
2
)
∣
\lvert W(w)\rvert=\lvert \frac {\sin{(\frac {wM} 2)}} {\sin{(\frac w 2)}} \rvert
∣W(w)∣=∣sin(2w)sin(2wM)∣
相位响应:
Θ
(
w
)
=
−
w
(
M
−
1
2
)
\Theta(w)=-w(\frac {M-1} 2)
Θ(w)=−w(2M−1)
当M=20时
当M=100时
随着M的增大,主瓣的宽度减小。旁瓣随着M的增大而变窄,峰值变高,旁瓣的面积不随M变化。
blackman(M=20):
Hamming(M=20):
从上述描述可以看出不同窗函数对频域响应是有影响的。
5、窗函数的特点
1)因为频域响应是由窗函数卷积得到的,所以具有平滑作用。
2)矩形窗的截取会产生振铃现象,导致旁瓣增大。可以使用其他窗截取进行抑制。
3)其他窗的使用可以有效降低旁瓣,使整个频域响应更加平滑,但是主瓣会展宽,峰值降低,过渡带增加。
6、窗系数的求法:
常用求取滤波器系统的工具是使用matlab设计。