设计二:数字滤波器的设计
一、设计要求
利用双线性法实现巴特沃思IIR数字低通、高通、带通、带阻滤波器,具体指标如下:
1)低通IIR数字滤波器性能指标,fp=1.2kHz,fs=2kHz,Rp=1dB,As=40dB,Fs=8kHz;
2)高通IIR数字滤波器性能指标,fp=3kHz ,fs=1.2k Hz,Rp=1dB,As=100dB,Fs=8kHz;
3)带通IIR数字滤波器性能指标,fp1=1.2kHz,fp2=3kHz,fs1=1kHz,fs2=3.2kHz,Rp=1dB,As=100dB,Fs=8kHz;
4)带阻IIR数字滤波器性能指标,fp1=1kHz,fp2=3.2kHz,fs1=1.2kHz,fs2=3kHz,Rp=1dB,As=52dB,Fs=8kHz。
画出所设计滤波器的幅频响应图,观察图形,验证所设计滤波器是否满足指标要求。
二、设计所用MATLAB函数
(1)buttord函数
功能:确定巴特沃思滤波器的阶数N和3dB截至频率?c 调用格式:[n,wc]=buttord(wp,ws,Rp,Rs,’s’) [n,wc]=buttord(wp,ws,Rp,Rs) (2)buttap函数
功能:设计巴特沃思模拟低通原型滤波器。 调用格式:[z,p,k]=buttap(n) (3)ploy函数
功能:求某向量指定根所对应的多项式系数向量。 调用格式:a=ploy(p)
(4)lp2lp,lp2hp,lp2bp,lp2bs函数
功能:将模拟低通原型滤波器分别转化为实际的低通、高通、带通、带阻滤波器。
调用格式:[bt,at]=lp2lp(b,a,wc) [bt,at]=lp2hp(b,a,wc) [bt,at]=lp2bp(b,a,w0,bw) [bt,at]=lp2bs(b,a,w0,bw) (5)bilinear函数
功能:将模拟滤波器H(s)变成数字滤波器H(z)。 调用格式:[bz,az]=bilinear(bs,as,fs) (6)butter函数。
功能:设计低通、高通、带通和带阻的数字和模拟巴特沃思滤波器。 调用格式:[b,a]=butter(n,wc),
[b,a]=butter(n,wc,’ftype’) [b,a]=butter(n,wc,’s’)
[b,a]=butter(n,wc,’ftype’,’s’) (7)freqs函数
功能:计算模拟滤波器的频率响应。 调用格式:h=freqs(b,a,w) [h,w]=freqs(b,a) [h,w]=freqs(b,a,n) freqs(b,a) (8)freqz函数
功能:计算数字滤波器的频率响应。 调用格式:[h,w]=freqz(b,a,n) [h,f]=freqz(b,a,n,Fs) h=freqz(b,a,w) h=freqz(b,a,f,Fs) freqz(b,a)
三、设计内容
1、低通IIR数字滤波器 fp=1200;fs=2000;Fs=8000;
wp=fp/Fs*2*pi; %数字滤波器的通带截止频率 ws=fs/Fs*2*pi; %数字滤波器的阻带截止频率 Rp=1;As=40; %输入滤波器的通阻带衰减指标
[n,wc]=buttord(wp/pi,ws/pi,Rp,As) ;%计算数字巴特沃思滤波器的阶数n和3dB 截至频率wc。其中,wp和ws??0,1?,1对应抽样频率0.5Fs或?
[bd,ad]=butter(n,wc) ; %设计3dB截至频率为wc的n阶巴特沃思数字滤波器, wc为一元矢量,产生数字低通滤波器
[H,w]=freqz(bd,ad); %得到数字滤波器的n点频率响应值,这n个点均匀地分布在[0,?]上,并将这n个频点的频率记录在w中,相应的频响值记录在H中,缺省时n=512。
dbH=20*log10(abs(H)/max(abs(H))); %化为分贝值 plot(w/2/pi*Fs,dbH,'k');
title('幅度响应(dB)');axis([0,Fs/2,-40,5]); ylabel('dB');xlabel('频率(Hz)'); set(gca,'XTick',[0,fp,fs,Fs/2]); set(gca,'YTick',[-50,-20,-3,0]);grid
低通IIR数字滤波器
幅度响应(dB)0-3dB-20012002000频率(Hz)4000
2、高通IIR数字滤波器 fp=3000;fs=1200; Fs=8000;
wp=fp/Fs*2*pi; %数字滤波器的通带截止频率 ws=fs/Fs*2*pi; %数字滤波器的阻带截止频率 %wp=0.4; %数字滤波器的通带截止频率 %ws=0.25; %数字滤波器的阻带截止频率 Rp=1;As=100; %输入滤波器的通阻带衰减指标 [n,wc]=buttord(wp/pi,ws/pi,Rp,As) %计算阶数n和截止频率 [b,a]=butter(n,wc,'high') %直接求数字高通滤波器系数 [h,w]=freqz(b,a); %求数字系统的频率特性 dbH=20*log10(abs(h)/max(abs(h))); %化为分贝值 plot(w/pi,dbH);title('幅度响应(dB)');
ylabel('dB'); xlabel('频率(\\pi)');axis([0,1,-40,5]); set(gca,'XTick',[0,ws/pi,wp/pi,1]); set(gca,'YTick',[-40,-20,-1,0]);grid
高通IIR数字滤波器
幅度响应(dB)0-1dB-20-4000.3频率(?)0.751
3、带通IIR数字滤波器 fp1=1200;fs1=1000;
wp1=fp1/Fs*2*pi; %数字滤波器的通带截止频率 ws1=fs1/Fs*2*pi; %数字滤波器的阻带截止频率 fp2=3000;fs2=3200;
wp2=fp2/Fs*2*pi; %数字滤波器的通带截止频率 ws2=fs2/Fs*2*pi; %数字滤波器的阻带截止频率 %ws1=0.15;ws2=0.85; %数字滤波器的阻带截止频率 ws=[ws1,ws2];
%wp1=0.25;wp2=0.75; %数字滤波器的通带截止频率 wp=[wp1,wp2];
Rp=1;As=100; %输入滤波器的通阻带衰减指标 [n,wc]=buttord(wp/pi,ws/pi,Rp,As) %计算阶数n和截止频率 [b,a]=butter(n,wc) %直接求数字带通滤波器系数 [H,w]=freqz(b,a); %求数字系统的频率特性 dbH=20*log10(abs(H)/max(abs(H))); %化为分贝值 plot(w/pi,dbH,'k');
ylabel('dB)');title('幅度响应(dB)') ;axis([0,1,-40,5]); set(gca,'XTick',[0,ws1/pi,wp1/pi,wp2/pi,ws2/pi,1]); set(gca,'YTick', [-40,-20,-1,0]);grid
带通IIR数字滤波器
幅度响应(dB)0-1dB)-20-4000.250.30.750.81