基于Butterworth模拟LPF进行经典IIR数字滤波器一般设计的步骤总结
趁着这两天刚考完试,DSP忘掉的东西还不多,赶紧写篇note记录一下自己总结的经典IIR数字滤波器的一般设计流程。
说实话,抛开数学上映射关系的原理推导不谈,其实基于巴特沃斯模拟滤波器来设计IIR巴特沃斯数字滤波器的方法和步骤真的是相当简单的。但是老师上课讲课过于注重文字解释和授课模式的线性化,而忽略了用流程图这样简洁清晰的工具,就导致了上课时听的云里雾里,加之学校用的教科书又是相当的不详细且这个学期本身就太短了,短时间吃透是很费力的。我写下这篇文章也是希望之后要学习这门课的同学能够避免我学习时的雷区,假如我当时学的时候有一篇把步骤解读的很清晰的论文或者博客,会节约我很多的时间。还有学DSP一定要用厚书,最好是国外经典教材,在已有优秀经典教材的情况下写薄书教材的行为属于重复造轮子,赚稿费用的。要么是作者从厚书里胡乱抄的,要么就是作者自己对于经典厚书的学习笔记的精炼总结,会有很多文字让人看的不明所以。
废话不多说了,接下来进入正题:
知识点介绍
- 明确应用场景:经典滤波器是指这种滤波器设计方法的特点是信号和干扰的频带互不重叠,在概念上与卡尔曼滤波器、自适应滤波器等现代滤波器相呼应。
- 巴特沃斯(Butterworth)模拟滤波器是一种典型的模拟滤波器,同属此类的还有切比雪夫(Chebyshev)滤波器、贝塞尔(Bessel)滤波器等等
- 所谓“设计”二字,是指给出具体指标后确定传递函数 H a ( s ) H_a(s) Ha(s)或者 H d ( z ) H_d(z) Hd(z)。其中, H a ( s ) H_a(s) Ha(s)与模拟滤波器设计对应, H d ( z ) H_d(z) Hd(z)与数字滤波器设计对应。
- HPF、BSF、BPF、LPF分别对应高通滤波器、带阻滤波器、带通滤波器、低通滤波器。
- IIR与FIR滤波器相对应,前者脉冲响应无限长,后者则为有限长。区别方法就是看差分方程中是否含有“反馈项” y ( n − i ) i = 1 , 2 , 3 , … y(n-i) \quad {i =1,2,3,\ldots} y(n−i)i=1,2,3,…
正文
为了能理解我后面要说的,首先要明确以下几点:
- 设计经典IIR数字滤波器,首先要设计模拟滤波器
- 数字指标要进行归一化,模拟指标也要进行归一化
- 数字域和模拟域本征变量映射的关系由脉冲响应不变法或者双线性变换法确定
假如你之前没有一些滤波器方面的基础(前提是要有DSP基本知识的基础),看到这几点可能还是不知道我在说什么,没关系,下面我会逐点介绍。介绍部分不会很详细,但是我会告诉你为了理解整体步骤,应该去疏通哪一部分知识点。
区别于国内的正常教科书授课思路,我在这里先把如何进行一套完整的设计流程用流程图呈现出来(为了更注重步骤的清晰与简练,以下所涉及的内容都是以经典巴特沃斯IIR数字高通滤波器的设计为例进行,并且不涉及具体的代码实现过程):
首先我们的目的要十分明确:设计数字滤波器时我们有什么需求?这就对应着率先要给出期望设计或者说期望逼近的数字指标(以数字高通滤波器的设计为例): ω s 、 ω p 、 α s 、 α p \omega_s、\omega_p、\alpha_s、 \alpha_p ωs、ωp、αs、αp,前两个指标往往介于0~2 π \pi π之间,后两个则以单位分贝(dB)给出。(注:角标’s’为“stop”截止的缩写,角标‘p’为“pass”通带的缩写)
步骤1
有了这四个指标后,第二步就要用到我上面说的第一点了,直接把这4个指标转化为相应的模拟域的4个指标: Ω s 、 Ω p 、 α s 、 α p \Omega_s、\Omega_p、\alpha_s、 \alpha_p Ωs、Ωp、αs、αp。
Ω s = 2 T t a n ω s 2 (1.1) \Omega_s = \frac{2}{T} tan \frac{\omega_s}{2} \tag{1.1} Ωs=T2tan2ωs(1.1)
Ω p = 2 T t a n ω p 2 (1.2) \Omega_p = \frac{2}{T} tan \frac{\omega_p}{2} \tag{1.2} Ωp=T2tan2ωp