数字滤波器与硬件滤波器的区别
数字滤波是用计算机软件或数字电路来实现的。模拟滤波器参数改变时需要更换元件。模拟滤波器由电阻、电容、电感组成。
平滑滤波
在matlab中用smooth函数表示
下面展示一些 smooth函数的滤波效果。
// Matlab中用smooth函数表示均值滤波器,且默认长度为5
clc;clear all;close all
w=0:0.01:4*pi;
y=cos(w)+0.2*randn(1,length(w));
plot(w,y,'g--')
hold on
plot(w,smooth(y),'k-')
效果如下图所示
同时,这里贴出了Matlab中关于smooth函数的说明
由matlab的帮助文档可以看到,smooth函数其实就是简单的取平均值,效果就是,原来的曲线毛刺少很多,也即为平滑,或者叫滤波。但是,为了知道该滤波器的类型,比如这是低通滤波还是高通滤波或者其他,我们有必要像硬件滤波器那样找出它的频率响应函数并画出幅频特性曲线来,这样就一目了然了。下面我们以长度为3的均值滤波器为例。
假设滤波器的差分方程为
y
(
k
)
=
1
3
[
x
(
k
−
1
)
+
x
(
k
)
+
x
(
k
+
1
)
]
y(k)=\frac{1}{3} [x(k-1)+x(k)+x(k+1)]
y(k)=31[x(k−1)+x(k)+x(k+1)]
z变换后为
Y
(
z
)
=
1
3
[
X
(
z
−
1
)
+
X
(
z
)
+
X
(
z
+
1
)
]
Y(z)=\frac{1}{3} [X(z-1)+X(z)+X(z+1)]
Y(z)=31[X(z−1)+X(z)+X(z+1)]
由z变换的性质可以进一步变为
Y
(
z
)
=
1
3
[
X
(
z
)
z
−
1
+
X
(
z
)
+
X
(
z
)
z
]
Y(z)=\frac{1}{3} [X(z)z^{-1}+X(z)+X(z)z]
Y(z)=31[X(z)z−1+X(z)+X(z)z]
所以
H
(
z
)
=
Y
(
z
)
X
(
z
)
=
1
3
(
z
−
1
+
1
+
z
)
H(z)=\frac{Y(z)}{X(z)}=\frac{1}{3} (z^{-1}+1+z)
H(z)=X(z)Y(z)=31(z−1+1+z)
而z变换和傅里叶变换的定义为:
X
(
z
)
=
∑
i
=
0
∞
x
(
n
)
z
−
n
X(z)=\sum_{i=0}^\infty x(n)z^{-n}
X(z)=i=0∑∞x(n)z−n
F
(
w
)
=
∫
−
∞
∞
f
(
t
)
e
−
i
w
t
d
t
F(w)=\int_{-\infty}^{\infty} f(t)e^{-iwt}dt
F(w)=∫−∞∞f(t)e−iwtdt
所以
z
=
e
i
w
=
c
o
s
w
+
i
s
i
n
w
z=e^{iw}=cosw+isinw
z=eiw=cosw+isinw
将H(z)中的z全部用cosw+isinw代替得
H
(
z
)
=
Y
(
z
)
X
(
z
)
=
1
3
(
1
c
o
s
w
+
i
s
i
n
w
+
1
+
c
o
s
w
+
i
s
i
n
w
)
=
1
3
(
2
c
o
s
w
+
1
)
H(z)=\frac{Y(z)}{X(z)}=\frac{1}{3} (\frac{1}{cosw+isinw}+1+cosw+isinw)=\frac{1}{3}(2cosw+1)
H(z)=X(z)Y(z)=31(cosw+isinw1+1+cosw+isinw)=31(2cosw+1)
所以幅频函数为
∣
H
(
z
)
∣
=
1
3
(
2
c
o
s
w
+
1
)
| H(z)|=\frac{1}{3}(2cosw+1)
∣H(z)∣=31(2cosw+1)
相位响应为0
FIR和IIR的由来
FIR(Finite Impulse Response),中文名叫有限长单位冲激响应滤波器。在学习数字信号处理的时候,我们首次接触这个名词。与之对应的是IIR滤波器,全称为Infinite Impulse Response,有限长单位冲激响应滤波器。上文的平滑滤波器就是一种FIR滤波器。但当初学习时,我不太明白为什么称呼它们一个是有限一个是无限。
我们都知道FIR的差分方程是形如以下的式子
y
(
k
)
=
a
0
x
(
k
)
+
a
1
x
(
k
−
1
)
+
a
2
x
(
k
−
2
)
y(k)=a_0x(k)+a_1x(k-1)+a_2x(k-2)
y(k)=a0x(k)+a1x(k−1)+a2x(k−2)
而IIR的差分方程是形如以下的式子
y
(
k
)
=
b
1
y
(
k
−
1
)
+
b
2
y
(
k
−
2
)
+
a
0
x
(
k
)
+
a
1
x
(
k
−
1
)
+
a
2
x
(
k
−
2
)
y(k)=b_1y(k-1)+b_2y(k-2)+a_0x(k)+a_1x(k-1)+a_2x(k-2)
y(k)=b1y(k−1)+b2y(k−2)+a0x(k)+a1x(k−1)+a2x(k−2)
可以看到,区别就是,FIR当前时刻的输出只与输入有关,与过去时刻的输出无关。但IIR当前时刻的输出不仅与输入有关,还与过去时刻的输出有关。
试想,一旦停止输入,即输入变为0,FIR的输出立即变为0,而IIR的当前时刻的输出因为与过去的输出有关,不会立马变为0,而是逐渐衰减,类似等比函数那样,虽然会越来越小,但却无穷无尽,因此称其为无限长单位冲激响应滤波器当真实至名归。
因此,FIR又称为非递归型滤波器,是数字信号处理系统中最基本的元件,它可以在保证任意幅频特性的同时具有严格的线性相频特性,同时其单位抽样响应是有限长的,因而滤波器是稳定的系统。IIR则被称为递归型滤波器。
特点:
· FIR滤波器的最主要的特点是没有反馈回路,稳定性强,故不存在不稳定的问题;
· FIR具有严格的线性相位,幅度特性随意设置的同时,保证精确的线性相位;
· FIR设计方式是线性的,硬件容易实现;
· FIR相对IIR滤波器而言,相同性能指标时,阶次较高,对CPU的性能要去较高。
Y
(
z
)
=
a
0
X
(
z
)
+
a
1
X
(
z
)
z
−
1
+
a
2
X
(
z
)
z
−
2
Y(z)=a_0X(z)+a1X(z)z^{-1}+a2X(z)z^{-2}
Y(z)=a0X(z)+a1X(z)z−1+a2X(z)z−2
H
(
z
)
=
1
a
0
+
a
1
z
−
1
+
a
2
z
−
2
H(z)=\frac{1}{a_0+a1z^{-1}+a2z^{-2}}
H(z)=a0+a1z−1+a2z−21
FIR和IIR的H(z)
IIR滤波器的差分方程为:
y
(
k
)
=
b
1
y
(
k
−
1
)
+
b
2
y
(
k
−
2
)
+
a
0
x
(
k
)
+
a
1
x
(
k
−
1
)
+
a
2
x
(
k
−
2
)
y(k)=b_1y(k-1)+b_2y(k-2)+a_0x(k)+a_1x(k-1)+a_2x(k-2)
y(k)=b1y(k−1)+b2y(k−2)+a0x(k)+a1x(k−1)+a2x(k−2)
经过z变换后变为:
Y
(
z
)
=
b
1
Y
(
z
)
z
−
1
+
b
2
Y
(
z
)
z
−
2
+
a
0
X
(
z
)
+
a
1
X
(
z
)
z
−
1
+
a
2
X
(
z
)
z
−
2
Y(z)=b_1Y(z)z^{-1}+b_2Y(z)z^{-2}+a_0X(z)+a1X(z)z^{-1}+a2X(z)z^{-2}
Y(z)=b1Y(z)z−1+b2Y(z)z−2+a0X(z)+a1X(z)z−1+a2X(z)z−2
因此
H
(
z
)
=
1
−
b
1
z
−
1
−
b
2
z
−
2
a
0
+
a
1
z
−
1
+
a
2
z
−
2
H(z)=\frac{1-b_1z^{-1}-b_2z^{-2}}{a_0+a1z^{-1}+a2z^{-2}}
H(z)=a0+a1z−1+a2z−21−b1z−1−b2z−2
巴特沃斯低通滤波器
总结
由前文可以看出,数字滤波器的实现只需要时域上的差分方程即可,但分析其频响时(低通还是高通等),需要对差分方程进行z变换,接着得到H(z),最后得到H(w),从而得到幅频响应曲线和相频响应曲线。
数字滤波器和硬件滤波器的优缺点
1.实时性:硬件滤波器的延迟更小,数字滤波器的延迟大是因为通过乘法器和延时器来制作的,而这本身就是硬件电路制作,而且操作系统指令的下达是需要时间的,因此延迟更大。
2.滤波效果:数字滤波器可以实现更好的频率响应,即过渡带更小,频率响应曲线更接近理想的。
3.成本。显示硬件滤波器需要专门制作电路,而且参数不可调,而数字滤波器可以随意更改,非常灵活。