数字滤波器设计之一:巴特沃斯(Butterworth)滤波器 您所在的位置:网站首页 butter的图片 数字滤波器设计之一:巴特沃斯(Butterworth)滤波器

数字滤波器设计之一:巴特沃斯(Butterworth)滤波器

2023-10-07 17:04| 来源: 网络整理| 查看: 265

        我们常说的经典滤波器是根据傅里叶分析和变换设计出来的,只允许一定频率范围内的信号成分正常通过,而阻止另一部分频率成分通过。按照最佳逼近特性或者滤波通带特性分类,主要为巴特沃斯滤波器(Butterworth)、切比雪夫滤波器(Chebyshev)、贝塞尔滤波器(Bessel)和椭圆滤波器(Elliptic)四种。每种MATLAB都有相应的函数,用起来也比较方便,但是却缺少C/C++的程序,于是自己仔细研究了每种滤波器的特性和原理,并且部分滤波器实现了C语言的代码化,接下来的时间会对这些滤波器的原理和C语言的实现进行介绍。

该系列均以低通滤波器为原型来介绍,其他类型的滤波器可以由低通滤波器通过频率变换转换得到,这里不过多介绍。低通滤波器的主要性能指标有以下几个:通带截止频率fp、阻带截止频率fs、通带衰减 ( Ap)、阻带衰减 ( As) 以及归一化频率时需要用到的-3dB的转折频率fc。

1. Butterworth滤波器原理

     Butterworth滤波器因其在通带内的幅值特性具有最大平坦的特性而闻名,是四种经典滤波器中最简单的,巴特沃斯滤波器只需要两个参数表征,滤波器的阶数N和-3dB处的截止频率\Omega _c。其幅度平方函数为:

                                                                            \bg_white \left | \mathrm{H}_a\left ( j\Omega \right ) \right |^{2}=\frac{1}{1+\left ( \frac{\Omega }{\Omega _c} \right )^{2N}}

                               \bg_white A_{p}=10lg\left ( 1+\varepsilon _{p}^{2} \right ),A_{s}=10lg\left ( 1+\varepsilon _{s}^{2} \right ),A\left ( \Omega \right )=10lg\left ( 1+\left ( \frac{\Omega }{\Omega _c} \right )^{2N} \right )

N是滤波器的阶数,从幅度平方函数可以看出,N阶滤波器有2N个极点,而且这2N个极点均布在一个圆上,圆的半径为,称之为Butterworth圆,Butterworth滤波器系统是一个线性系统,要使其稳定,其极点必须位于S平面的左半平面,所以取左半平面内的N个极点作为滤波器的极点,滤波器就是稳定的了,求出极点之后,计算模拟滤波器的系数as、bs,然后通过双线性变换(不懂得自行查书)由模拟域到数字域,求出系数az和bz 。最后通过差分方程就可以计算滤波结果了。

                                              \bg_white y(n)= \sum_{k=0}^{\propto }h(k)x(n-k)=-\sum_{k=1}^{M}a_{k}y(n-k)+\sum_{k=0}^{N}b_{k}x(n-k)

2. C语言实现

A.求阶数

公式为:

                                                                                   N=\frac{1}{2}\frac{lg\left ( \frac{10^{0.1A_s}-1}{10^{0.1A_p}-1} \right )}{lg\left ( \frac{\Omega _s}{\Omega _p} \right )}

代码:

N = ceil(0.5*( log10 (( pow (10, Stopband_attenuation/10) - 1)/ ( pow (10, Passband_attenuation/10) - 1)) / log10 (Stopband/Passband) ));

B.求极点

公式:

代码:

for(k = 0;k


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有