数字巴特沃思滤波器的设计
实验目的 通过本次实验掌握数字巴特沃思滤波器的设计。
实验要求 在掌握巴特沃斯滤波器的原理的基础上,通过MATLAB软件进行数字巴特沃斯滤波器的设计。
实验原理 1. 利用原型设计法,对满足指标要求的模拟低通原型滤波器,通过双线性变换法,得到满足指标要求的数字巴特沃思低通滤波器;
2. 双线性变换法原理参见《数字信号处理》教材。
实验步骤 1、编写程序。设计数字巴特沃思低通滤波器dbutter.m文件。
输入参数: Fs
输出参数:系数
2、编写程序。通过调用dbutter.m函数,设计一个数字低通滤波器。
绘出零极点分布图、单位取样响应(可调用库函数impz)、幅频响应、相位响应。
3、用help查看内部函数butter.m,了解调用格式,并用此函数重新设计2中要求的滤波器。
4、利用fdatool设计各种类型的数字滤波器。
实验内容 1、设计巴特沃思低通滤波器。
2、利用MATLAB工具fdatool设计各种类型的滤波器。
实验数据 编写的设计数字巴特沃思低通
波器的dbutter.m文件如下:
冲激响应不变法:
function
[b,a]=dbutter1(wp,ws,ap,as,fs)
T=1/fs;
np=wp*pi*fs;
ns=ws*pi*fs;
N1=(log10((10^(ap/10)-1)/…
(10^(as/10)-1)))/…
(2*log10(np/ns));
N=ceil(N1);
nc=np/((10^(ap/10)-1)^…
(1/(2*N)));
for k=1:N
s(k)=nc*exp(j*pi*((2*k+N-1)/…
(2*N)));
youerw.com ,N);
for n=1:N
A=1;
for m=1:N
if m~=n
A=A*(s(n)-s(m));
R(n)=(nc^N)/A;
% else continue
end
end
end
[bb,aa]=residue(R,s,0);
[b,a]=impinvar(bb,aa,fs);
end
双线性变换法:
function
[b,a]=dbutter2(wp,ws,ap,as,fs)
T=1/fs;
np=(2*fs)*tan(wp*pi/2);
ns=(2*fs)*tan(ws*pi/2);
N1=(log10((10^(ap/10)-1)…
/(10^(as/…
10)-1)))/(2*log10(np/ns));
N=ceil(N1);
nc=np/((10^(ap/10)-1)^…
(1/(2*N)));
for k=1:N
s(k)=nc*exp(j*pi*((2*k+N-1)/…
(2*N)));
end
R=zeros(1,N);
for n=1:N
A=1;
for m=1:N
if m~=n
A=A*(s(n)-s(m));
R(n)=(nc^N)/A;
% else continue
end
end
end
[bb,aa]=residue(R,s,0);
[b,a]=bilinear(bb,aa,fs);
end
>> [b1,a1]=dbutter2(0.2,0.3,1,15,100000);
youerw.com
>> [h1,w1]=freqz(b1,a1);
>> plot(w1,abs(h1),'LineWidth',3)
>> title('幅频响应'),grid on
>> plot(w1,(180/pi)*angle(h1),'LineWidth',1.5)
>> grid on,title('相位响应');172