分享

巴特沃斯滤波器的设计

 许康华竞赛优学 2020-08-26

巴特沃斯滤波器是三大原型模拟低通滤波器之一,其他的模拟滤波器(如高通、带通和带阻滤波器)可以由三大原型低通滤波器通过简单的频率变换来实现。

MATLAB中,实现巴特沃斯滤波器的命令包括三个:buttord、buttap和butter,各有其用途。

① buttord:用来求巴特沃斯滤波器的阶数

[N, Wn] = buttord(Wp, Ws, Rp, Rs, 's'):给定通带边界频率Wp和阻带边界频率Ws(rad/s)、通带波动Rp(dB)和最小阻带衰减Rs(dB),求满足指标的模拟低通滤波器的最低阶数N和3 dB边界频率Wn。's'表示模拟域。

② buttap:用来在给定滤波器阶数时,计算滤波器的零极点和增益因子

       [z, p, k] = buttap(N):给定阶数N时,计算归一化的巴特沃斯滤波器的零极点和增益因子,其3 dB的边界频率为1。z是一个空向量,p为N个元素的向量,k为增益因子。系统函数为


③ butter:在给定阶数和边界频率时,设计滤波器,格式为

[B, A] = butter[N, Wn, 'type', 's']:给定模拟滤波器的阶数N和边界角频率Wn,设计N阶模拟巴特沃斯低通滤波器。计算得到的B和A分别为滤波器的系统函数的分子和分母多项式的系数。当设计低通滤波器时,'type'可缺省。

例1  设计满足如下指标的巴特沃斯模拟低通滤波器

fc = 3000 Hz, fs = 3400 Hz, Rp = 1 dB, Rs = 40 dB

      MATLAB代码如下

clc; clear;

Wc = 2*pi*3000; Wr = 2*pi*3400; Rp = 1; Rs = 40;    % 滤波器参数

[N, Wc] = buttord(Wc, Wr, Rp, Rs, 's');    

% 计算滤波器阶数和边界频率

[B, A] = butter(N, Wc, 's');   

% 设计巴特沃斯低通滤波器

omega = [0:200:8000*pi];

h = freqs(B, A, omega);

gain = 20*log10(abs(h));

plot(omega/(2*pi), gain);    

% 绘制设计的滤波器幅频特性

xlabel('频率/Hz'); ylabel('幅度/dB');

grid on;

运行得到图1。


图1  巴特沃斯低通滤波器幅频特性

由运行结果可知,得到的巴特沃斯滤波器阶数是43阶,这是一个相当复杂的滤波器,这是由于滤波器的设计要求较高。如果将“Rp = 1dB, Rs = 40 dB”改为“Rp = 1.5 dB, Rs = 35 dB”,即降低滤波器的设计要求,重新运行后,得到新的滤波器的阶数降为36阶,因而滤波器的复杂度有所降低,并得到新的36阶IIR滤波器的幅频特性,可以看出在通带内两者几乎没有什么不同,但在过渡带内,43阶IIR滤波器下降得更快一些。

原滤波器之所以阶数高达43阶,是因为其通带边界频率Wp和阻带边界频率Ws离得较近,如果将通带边界频率改为fc = 2400 Hz,阻带边界频率保持不变,重新运行代码后,可以得到16阶巴特沃斯低通滤波器,滤波器在通带和阻带的指标保持不变,但是设计的滤波器复杂度大为降低了。滤波器的实际设计指标是根据需要而选择的

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多