“学而时习之、不亦乐乎… 温故而知新、可以为师矣。”很多经典的知识理论,每次复习回顾都会有新的收获和体会。
顾名思义,LTI系统线性时不变两个特性,这令系统设计比较自适应和匹配滤波器等复杂方法简单多了。那么最这个系统最准确的(特性)抽象定义就是,当单位脉冲响应函数
δ
(
n
)
\delta (n)
δ(n)作为系统的输入,输出信号
y
(
n
)
y(n)
y(n)就是这个系统的响应,即
h
(
n
)
h(n)
h(n)。这里需要强调的是,
δ
(
n
)
\delta (n)
δ(n)虽然只是一个单位冲击,但
y
(
n
)
y(n)
y(n)有可能是一串响应,像“阿拉伯的故事,伯的故事,的故事”,有点余音绕梁的感觉。 从数学的角度,可以看成系统对冲击输入,有不同路径的延时加权,然后累加后输出一个结果,有些路径0延时,有些路径延时比较长。数字信号系统通常用时钟(节拍)来衡量这个延时,有的一拍,有的很多拍,下图是借用z变换延时算子来表示的LTI系统。
一般来说,这个延时系统中,延时久的抽头加权值越小,犹如实际中回音会越来越小一样。相反的话系统就不收敛了,导致系统最后会爆炸,犹如核子响应,这是无法控制的,暂且不去深究了。
\space 对LTI最直观的表征就是差分方程,这很好理解,软件也很好实现。上图的例子可以用 y ( n ) = a x ( n ) + b x ( n − 1 ) + c x ( n − 2 ) y(n)=ax(n)+bx(n-1)+cx(n-2) y(n)=ax(n)+bx(n−1)+cx(n−2)来表述。很显然这是一个FIR滤波器,因为冲激响应经过滤波器后,最多能影响两个延时,再多的延时冲击对系统来说已经熟视无睹了,这就是所谓的有限冲激响应滤波器FIR的由来。当然FIR滤波器还有很多特性,不是本篇要展开的。
无限冲激就是说
δ
(
n
)
\delta (n)
δ(n)在系统里一直存在,就像你感染了某些病毒,刚开始的时候表现的感冒症状很严重(瞬态冲击),但即使症状痊愈了,他们在你身体里还存在,只能选择和他们并存,有朝一日卷土重来未可知。IIR系统也确实如此,它对系统的改变会很迅猛,同时因为在系统中一直有残留响应,也为系统的不稳定性埋下伏笔。举例来说,对前面的差分增加一个递归抽头,
y
(
n
)
=
a
x
(
n
)
+
b
x
(
n
−
1
)
+
c
x
(
n
−
2
)
+
d
y
(
n
−
1
)
y(n)=ax(n)+bx(n-1)+cx(n-2)+dy(n-1)
y(n)=ax(n)+bx(n−1)+cx(n−2)+dy(n−1)
很显然,一旦系统受到
δ
(
n
)
\delta (n)
δ(n)冲激,那么只要
d
d
d不为0,这种冲激随着时间推移,会一直影响系统输出
y
(
n
)
y(n)
y(n),
d
d
d这个权系数很大,或者与其他权系数的关系设计不合理,系统一工作,就会出现非常大的响应结果(不收敛、发散),对于数字设计来说,大部分情况是灾难,数字信号处理要寻找线性时不变的稳定系统。IIR虽然有风险,但它在运算效率和系统响应方面的优势又令人向往,所以IIR一直在系统中扮演重要的角色。
所谓的滤波器设计,实质上就是寻找一组系数,与系统输入(iir还要加上输出)做卷积(乘累加),常见的设计方法是脉冲响应不变方法和双线性变换方法。但两种方法的基础都是基于模拟滤波器的laplace变换而来,所以模拟原型滤波器也是设计数字滤波器的基础。参考文档里罗列了巴特沃兹到贝塞尔等滤波器的介绍博客,他们为IIR设计提供了原型,但如果需要灵活改变参数,实时设计的话,还需要对滤波器的数学公式和滤波器的指标参数有更深刻的理解。引用数字信号处理 原萍 著 中国铁道出版社文中的一段话,从原型模拟滤波器到数字滤波器的设计,就是寻找s域到z域的映射:
(1)H(z)的频率响应要能模仿H(s)的频率响应,即s平面的虚轴应映射到z平面的单位圆上。(2)H(s)的因果稳定性映射成H(z)后保持不变,即s平面的左半平面应映射到z平面的单位圆以内。
我觉得作者这本书对于IIR设计部分理解的很深入,对其中的butterworth滤波器部分摘抄整理一下,加深理解。butterworth低通滤波器的经典幅频表达:
∣
H
(
j
Ω
)
∣
2
=
1
1
+
(
Ω
Ω
c
)
2
N
,
N
=
1
,
2
,
3
,
.
.
.
.
|H(j\Omega)|^2=\frac{1}{1+(\frac{\Omega}{\Omega_c})^{2N}}, N=1,2,3,....
∣H(jΩ)∣2=1+(ΩcΩ)2N1,N=1,2,3,....
或者
∣
H
(
j
Ω
)
∣
=
1
1
+
(
Ω
Ω
c
)
2
N
,
N
=
1
,
2
,
3
,
.
.
.
.
|H(j\Omega)|=\frac{1}{\sqrt{1+(\frac{\Omega}{\Omega_c})^{2N}}}, N=1,2,3,....
∣H(jΩ)∣=1+(ΩcΩ)2N1,N=1,2,3,....
当
Ω
=
Ω
c
\Omega=\Omega_c
Ω=Ωc的时候,幅度为
Ω
=
0
\Omega=0
Ω=0时的
1
/
2
1/\sqrt{2}
1/2,即所谓的
−
3
d
b
-3db
−3db截止频率。如何根据这个幅频表达推算转换函数是一个有挑战的事情,也是模拟滤波器设计的核心。长话短说,令
s
/
Ω
s/\Omega
s/Ω代替
s
s
s,取butterworth圆上复平面的极点(另一侧为共轭)作为传递函数极点,得到
H
a
(
s
)
=
Ω
c
N
∏
i
=
0
N
−
1
(
s
−
s
i
)
H_a(s)=\frac{\Omega_c^N}{\prod_{i=0}^{N-1}(s-s_i) }
Ha(s)=∏i=0N−1(s−si)ΩcN
N=3的时候,得出三阶滤波器原型:
H
a
(
s
)
=
1
(
s
Ω
c
)
3
+
2
(
s
Ω
c
)
+
(
s
Ω
c
)
+
1
H_a(s)=\frac{1}{(\frac{s}{\Omega_c})^3+2(\frac{s}{\Omega_c})+(\frac{s}{\Omega_c})+1 }
Ha(s)=(Ωcs)3+2(Ωcs)+(Ωcs)+11
而对于获取滤波器阶数的办法,利用了一组不等式,即通带内衰减不能小于
α
p
\alpha_p
αp,阻带内的纹波不能大于
α
s
\alpha_s
αs,在通带和阻带上用(不)等式来表示:
α
p
⩾
−
20
l
o
g
∣
H
(
j
Ω
)
∣
⩾
−
10
l
o
g
1
1
+
(
Ω
p
Ω
c
)
2
N
αp⩾−20log|H(jΩ)|⩾−10log11+(ΩpΩc)2N
α
s
⩽
−
20
l
o
g
∣
H
(
j
Ω
)
∣
⩽
−
10
l
o
g
1
1
+
(
Ω
s
Ω
c
)
2
N
αs⩽−20log|H(jΩ)|⩽−10log11+(ΩsΩc)2N
两个不等式做消减,令
Ω
c
\Omega_c
Ωc消去,最后得出
(
Ω
p
Ω
s
)
2
N
⩽
1
0
−
0.1
α
p
−
1
−
1
1
0
−
0.1
α
s
−
1
−
1
(\frac{\Omega_p}{\Omega_s})^{2N}\leqslant \frac{10^{-0.1\alpha_p-1}-1}{10^{-0.1\alpha_s-1}-1}
(ΩsΩp)2N⩽10−0.1αs−1−110−0.1αp−1−1
推导出
N
⩾
l
o
g
[
(
1
0
−
0.1
α
p
−
1
−
1
)
/
(
1
0
−
0.1
α
s
−
1
−
1
)
]
2
l
o
g
Ω
p
Ω
s
N\geqslant \frac{log[(10^{-0.1\alpha_p-1}-1)/(10^{-0.1\alpha_s-1}-1)]}{2log\frac{\Omega_p}{\Omega_s}}
N⩾2logΩsΩplog[(10−0.1αp−1−1)/(10−0.1αs−1−1)]这个结果我推导不出来(有些疑问),暂且按照原文的意思,主要为了理解如何求参,有了它和通带阻带要求,就可以估算需要几阶滤波了,然后根据之前的公式计算:
Ω
c
=
Ω
p
(
1
0
−
0.1
α
p
−
1
−
1
)
1
/
2
N
\Omega_c = \frac{\Omega_p}{(10^{-0.1\alpha_p-1}-1)^{1/2N}}
Ωc=(10−0.1αp−1−1)1/2NΩp或者
Ω
c
=
Ω
s
(
1
0
−
0.1
α
s
−
1
−
1
)
1
/
2
N
\Omega_c = \frac{\Omega_s}{(10^{-0.1\alpha_s-1}-1)^{1/2N}}
Ωc=(10−0.1αs−1−1)1/2NΩs
而通过查表可以很容易得到归一化
p
=
s
/
Ω
p=s/\Omega
p=s/Ω巴特沃兹原型滤波器。
那么只要求出截止频率
Ω
c
\Omega_c
Ωc,即可反向求出你所需要的滤波器原型了。在The Butterworth Low-Pass Filter一文中讲到了matlab计算butterworth原型滤波器的方法,该文也绘制了不同阶数的幅频响应。
条条大路通罗马,就看哪条最适合你了。
Signal Processing Fundamentals, implementations and applications
数字信号处理 原萍 著 中国铁道出版社
巴特沃斯滤波器详解
切比雪夫滤波器
椭圆滤波器
贝塞尔滤波器
IIR-冲激响应不变法各个步骤详解
Understanding Butterworth Filter Poles and Zeros
Butterworth Filter Construction along with its Applications
A BUTTERWORTH-FILTER COOKBOOK
The Butterworth Low-Pass Filter
hebyshev Filters
Matlab-style IIR filter design