zl程序教程

您现在的位置是:首页 >  后端

当前栏目

深入浅出matplotlib(103):使用巴特沃斯滤波器

matplotlib 深入浅出 滤波器 103 使用
2023-09-14 09:10:05 时间

在信号处理过程中,经常要使用巴特沃斯滤波器,因为硬件有很多干扰因素。比如工频干扰,在中国基本上都会有50Hz的交流电干扰。接着下来还会器件的干扰,由于采集的信号比较小,放大之后就会带来各种其它信号进行来。又比如采集心电图信号过程中,可能受到肌肉电信号的干扰。

由于各种各样的干扰存在,我们需要把这些干扰信号排除掉。很多时候采用硬件来滤波已经不可能,或者采用硬件的成本太贵,这样就需要采用软件的算法来计算这种滤波。而使用滤波器的选择方面,往往会选择巴特沃斯滤波器。

巴特沃斯滤波器(Butterworth filter)是电子滤波器的一种,它也被称作最大平坦滤波器。巴特沃斯滤波器的特点是通频带内的频率响应曲线最大限度平坦,没有纹波,而在阻频带则逐渐下降为零。巴特沃斯滤波器的特点是通频带内的频率响应曲线最大限度平坦,没有起伏,而在阻频带则逐渐下降为零。在振幅的对数对角频率的波得图上,从某一边界角频率开始,振幅随着角频率的增加而逐渐减少,趋向负无穷大。 一阶巴特沃斯滤波器的衰减率为每倍频6分贝,每十倍频20分贝。二阶巴特沃斯滤波器的衰减率为每倍频12分贝,三阶巴特沃斯滤波器的衰减率为每倍频18分贝,如此类推。巴特沃斯滤波器的振幅对角频率单调下降,并且也是唯一的无论阶数、振幅对角频率曲线都保持同样的形状的滤波器。只不过滤波器阶数越高,在阻频带振幅衰减速度越快。其他滤波器高阶的振幅对角频率图和低级数的振幅对角频率有不同的形状。

由于此滤波器经常要使用,所以在python里也会经常操作,我们采用下面的代码来学习这个滤波器:

b, a = signal.butter(4, 314, 'low', analog=True)

这里引用了scipy.signal,然后使用but