基于matlab的巴特沃斯滤波器设计

一、butterworth滤波器也称最平响应特性滤波器,其特征多项式为:

|K(jΩ)|^2=K(jΩ)K(-jΩ)=(Ω/Ωc)^2N

巴特沃斯滤波器的模平方函数为:

       |H(jΩ)|^2=1/(1+|K(jΩ)|^2)=1/(1+(Ω/Ωc)^2N)

       N为滤波器的阶数;

当Ω=Ωс时,|H(jΩ)|=1/√2,所以Ωc为滤波器的半功率点或幅频特性(-3dB)点,随着N增大,通带边缘变化加快,幅频特性更加逼近,但无论N取多少,幅频特性总经过(-3dB)点。

二、为巴特沃斯滤波器设计技术标准:

通带截止频率fp=6kHz;

阻带截止频率fs=12kHz;

通带最大衰减1dB;

阻带最大衰减30dB;

三、在matlab中程序编写如下:

clear
clc
OmegaP=12*pi*10^3;%通带截止频率
OmegaS=24*pi*10^3;%阻带截止频率
Rp=1;As=30;
[N,OmegaC]=buttord(OmegaP,OmegaS,Rp,As,'s');%计算模拟巴特沃思阶数N和3dB截止频率OmegaC
[b,a]=butter(N,OmegaC,'s');%“s”表示模拟滤波器
w0=[OmegaC,OmegaS];%以下4句是检验Ωp,Ωs对应的衰减指标
[H,w]=freqs(b,a);
Hx=freqs(b,a,w0);
dbHx=-20*log10(abs(Hx)/max(abs(H)));
plot(w,20*log10(abs(H)));
xlabel('w');
ylabel('分贝');
set(gca,'xtickmode','manual','xtick',[0,5*10^5,10*10^5,15*10^5,20*10^5,]);
set(gca,'ytickmode','manual','ytick',[-200,-150,-100,-50,-1,]);

运行结果如下:

function createfigure(X1, Y1)
%CREATEFIGURE(X1, Y1)
%  X1:  x 数据的矢量
%  Y1:  y 数据的矢量

%  由 MATLAB 于 28-Nov-2021 11:50:06 自动生成

% 创建 figure
figure1 = figure;

% 创建 axes
axes1 = axes('Parent',figure1);
hold(axes1,'on');

% 创建 plot
plot(X1,Y1);

% 创建 xlabel
xlabel('w','FontSize',11);

% 创建 ylabel
ylabel('分贝','FontSize',11);

box(axes1,'on');
% 设置其余坐标轴属性
set(axes1,'XTick',[0 500000 1000000 1500000 2000000],'YTick',...
    [-200 -150 -100 -50 -1]);

验证结果

经仿真后图像可知随着频率的增大,其幅度单调递减,符合巴特沃斯滤波器的设计。 

总结:matlab对于简化滤波器的计算具有重大意义,而且能从matlab仿真图像上更清晰的判断

滤波器的设计是否合理。

参考文献:【1】张小虹。数字信号处理第二版【M】:机械工业出版社。
 

你可能感兴趣的:(matlab,机器学习,矩阵)