“本来打算介绍ERS&FDS 在频域上的计算,因为一个算法始终和参考文献对不拢,所以拖了很久很久,最近疫情在家,电脑游戏也玩腻了,就找个新的主题梳理总结一下。本文主要介绍Butterworth滤波器的s函数及z变换,以期对Matlab,Python等软件自带程序有更深入的理解,从而实现自行编程进行滤波计算。本文有很多数学公式推导,希望可以把该滤波器讲清楚。”
01
Butterworth滤波器频谱特性
在介绍Butterworth滤波器时,比较普遍的是仅介绍其幅频特性公式。如图1下,表示幅值和频率(角频率)的关系,其中N为滤波器的阶次,是正整数。
注意:图1上公式是错的,它没有注意到N的奇偶性。图1下是正确公式。
图1
同时还会画:幅值谱和相位谱(如图2)。
有些程序画图时,会对图2横坐标作归一化处理(即横坐标不是频率),如:Matlab中"butter"函数会默认定义横坐标为:fc/(Fs/2) ,其中fc是截止频率,Fs是采样频率。这增加了对该滤波器理解的难度。
图2
下面会对该滤波器公式作详细介绍和推导,以便参考并能画出图2。
02
s函数公式
本节逐步推导该滤波器公式的简化过程,特别要留意中间过程变量的定义。共分三步:
一,原始公式:
如图3,其中截止频率fc即幅值下降-3db的频率。特别要注意区分频率f(单位Hz)和角频率w(单位rad/s)。
图3
二,公式变化:
如图4,为了简洁,自变量也作了相应变化。
图4
三,公式简化:
如图5,该公式即为常用的简洁表达公式。
图5
利用图5公式,即可画出该滤波器的幅频图和相频图(图2)。后面的推导也基于此公式。
03
幅频特性推导
本节介绍对图5公式进行推导,从而得到图2的幅频特性公式。
对图5公式进行因式分解,得到图6:
图6
图6公式还可以写成如图7,可以让公式显示得短一些。
图7
对图7中 H(s)求模,即可得到幅频特性公式。我们先求其模的平方,即乘以它的共轭,其过程如图8:
图8
图8是将方程分母写成各极点的形式,图9是最后的推导,也是最难理解的部分:
图9
至此,推导出了图1下图的幅频特性公式,但总有一种似乎推导出却又没推导出的感觉~
因为有疑问,所以事情还没有结束~
如图10,即分母上,各自括号内=0时,s的值。
图10
分别拿5阶、6阶滤波器来举例,将各自极点画在复数域上,如图11:
图11
下面,我们来反向思考图9最后几步的推导过程。
04
反向思考:复数的因式分解
我们对两种情况的s高阶次函数进行因式分解:
1)当N为奇数时,如图12:
图12
2)当N为偶数时,如图13:
图13
分别拿5阶、6阶滤波器来举例,分别用 图12、图13的公式计算s在复数域上的解(即图14中的红色圆圈o)。会发现:和图11中的各极点完全一致。
图14
所以,图9中公式的最后几步得以证明成立。
05
总结
如果要用Butterworth滤波器,看到02节图5就可以了。后续只是对它结论的倔强推导。
有些资料,对该滤波器的方程描述如图15(注意看分母和图12,图13是不是很像?),这也是正确的。因为它的极点和图5公式的极点是一致的。
图15
至此,s函数方程的介绍和推导完毕。接下来的文章会介绍以下内容:
1)s函数极点和传递函数的直观关系;
2)s函数进行z变换的方法(和采样频率Fs也有关系);
疫情期间,祝大家:健康平安!
参考资料网址:
https://en.wikipedia.org/wiki/Butterworth_filter
有问题请指正,谢谢!