Matlab实现数字FIR的高通-、带通、低通、带阻滤波器的程序

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

利用汉宁窗设计Ⅰ型数字高通滤波器clearall;Wp=0.6*pi;Ws=0.4*pi;tr_width=Wp-Ws;%过渡带宽度N=ceil(6.2*pi/tr_width)%滤波器长度n=0:1:N-1;Wc=(Ws+Wp)/2;%理想低通滤波器的截止频率hd=ideal_hp1(Wc,N);%理想低通滤波器的单位冲激响应w_han=(hanning(N))';%汉宁窗h=hd.*w_han;%截取得到实际的单位脉冲响应[db,mag,pha,w]=freqz_m2(h,[1]);%计算实际滤波器的幅度响应delta_w=2*pi/1000;Ap=-(min(db(Wp/delta_w+1:1:501)))%实际通带纹波As=-round(max(db(1:1:Ws/delta_w+1)))%实际阻带纹波subplot(221)stem(n,hd)title('理想单位脉冲响应hd(n)')subplot(222)stem(n,w_han)title('汉宁窗w(n)')subplot(223)stem(n,h)title('实际单位脉冲响应hd(n)')subplot(224)plot(w/pi,db)title('幅度响应(dB)')axis([0,1,-100,10])clearall;Wp=0.6*pi;Ws=0.4*pi;tr_width=Wp-Ws;%过渡带宽度N=ceil(6.2*pi/tr_width)%滤波器长度n=0:1:N-1;Wc=(Ws+Wp)/2;%理想低通滤波器的截止频率hd=ideal_hp1(Wc,N);%理想低通滤波器的单位冲激响应w_han=(hanning(N))';%汉宁窗h=hd.*w_han;%截取得到实际的单位脉冲响应[db,mag,pha,w]=freqz_m2(h,[1]);%计算实际滤波器的幅度响应delta_w=2*pi/1000;Ap=-(min(db(Wp/delta_w+1:1:501)))%实际通带纹波As=-round(max(db(1:1:Ws/delta_w+1)))%实际阻带纹波subplot(221)stem(n,hd)title('理想单位脉冲响应hd(n)')subplot(222)stem(n,w_han)title('汉宁窗w(n)')subplot(223)stem(n,h)title('实际单位脉冲响应hd(n)')subplot(224)plot(w/pi,db)title('幅度响应(dB)')axis([0,1,-100,10])基于切比雪夫一致逼近法设计FIR数字低通滤波器clearall;f=[00.60.71];%给定频率轴分点A=[1100];%给定在这些频率分点上理想的幅频响应weigh=[110];%给定在这些频率分点上的加权b=remez(32,f,A,weigh);%设计出切比雪夫最佳一致逼近滤波器[h,w]=freqz(b,1,256,1);h=abs(h);h=20*log10(h);subplot(211)stem(b,'.');grid;title('切比雪夫逼近滤波器的抽样值')subplot(212)plot(w,h);grid;title('滤波器幅频特性(dB)')利用汉宁窗设计Ⅰ型数字带阻滤波器clearall;Wpl=0.2*pi;Wph=0.8*pi;Wsl=0.4*pi;Wsh=0.6*pi;tr_width=min((Wsl-Wpl),(Wph-Wsh));%过渡带宽度N=ceil(6.2*pi/tr_width)%滤波器长度n=0:1:N-1;Wcl=(Wsl+Wpl)/2;%理想低通滤波器的截止频率Wch=(Wsh+Wph)/2;hd=ideal_bs(Wcl,Wch,N);%理想低通滤波器的单位冲激响应w_hann=(hanning(N))';%汉宁窗h=hd.*w_hann;%截取得到实际的单位脉冲响应[db,mag,pha,w]=freqz_m2(h,[1]);%计算实际滤波器的幅度响应delta_w=2*pi/1000;Ap=-(min(db(1:1:Wpl/delta_w+1)))%实际通带纹波As=-round(max(db(Wsl/delta_w+1:1:Wsh/delta_w+1)))%实际阻带纹波subplot(221)stem(n,hd)title('理想单位脉冲响应hd(n)')subplot(222)stem(n,w_hann)title('汉宁窗w(n)')subplot(223)stem(n,h)title('实际单位脉冲响应hd(n)')subplot(224)plot(w/pi,db)title('幅度响应(dB)')axis([0,1,-100,10])利用三角窗设计Ⅲ型数字带通滤波器clearall;Wpl=0.4*pi;Wph=0.6*pi;Wsl=0.2*pi;Wsh=0.8*pi;tr_width=min((Wpl-Wsl),(Wsh-Wph));%过渡带宽度N=ceil(6.1*pi/tr_width)%滤波器长度n=0:1:N-1;Wcl=(Wsl+Wpl)/2;%理想低通滤波器的截止频率Wch=(Wsh+Wph)/2;hd=ideal_bp2(Wcl,Wch,N);%理想低通滤波器的单位冲激响应w_tri=(triang(N))';%三角窗h=hd.*w_tri;%截取得到实际的单位脉冲响应[db,mag,pha,w]=freqz_m2(h,[1]);%计算实际滤波器的幅度响应delta_w=2*pi/1000;Ap=-(min(db(Wpl/delta_w+1:1:Wph/delta_w+1)))%实际通带纹波As=-round(max(db(Wsh/delta_w+1:1:501)))%实际阻带纹波subplot(221)stem(n,hd)title('理想单位脉冲响应hd(n)')subplot(222)stem(n,w_tri)title('三角窗w(n)')subplot(223)stem(n,h)title('实际单位脉冲响应hd(n)')subplot(224)plot(w/pi,db)title('幅度响应(dB)')axis([0,1,-100,10])利用布拉克曼窗设计Ⅱ型数字带通滤波器clearall;Wpl=0.4*pi;Wph=0.6*pi;Wsl=0.2*pi;Wsh=0.8*pi;tr_width=min((Wpl-Wsl),(Wsh-Wph));%过渡带宽度N=ceil(11*pi/tr_width)+1%滤波器长度n=0:1:N-1;Wcl=(Wsl+Wpl)/2;%理想低通滤波器的截止频率Wch=(Wsh+Wph)/2;hd=ideal_bp1(Wcl,Wch,N);%理想低通滤波器的单位冲激响应w_bman=(blackman(N))';%布拉克曼窗h=hd.*w_bman;%截取得到实际的单位脉冲响应[db,mag,pha,w]=freqz_m2(h,[1]);%计算实际滤波器的幅度响应delta_w=2*pi/1000;Ap=-(min(db(Wpl/delta_w+1:1:Wph/delta_w+1)))%实际通带纹波As=-round(max(db(Wsh/delta_w+1:1:501)))%实际阻带纹波subplot(221)stem(n,hd)title('理想单位脉冲响应hd(n)')subplot(222)stem(n,w_bman)title('布拉克曼窗w(n)')subplot(223)stem(n,h)title('实际单位脉冲响应hd(n)')subplot(224)plot(w/pi,db)title('幅度响应(dB)')axis([0,1,-100,10])利用海明窗设计Ⅱ型数字低通滤波器clearall;Wp=0.2*pi;Ws=0.4*pi;tr_width=Ws-Wp;%过渡带宽度N=ceil(6.6*pi/tr_width)+1%滤波器长度n=0:1:N-1;Wc=(Ws+Wp)/2;%理想低通滤波器的截止频率hd=ideal_lp1(Wc,N);%理想低通滤波器的单位冲激响应w_ham=(hamming(N))';%海明窗h=hd.*w_ham;%截取得到实际的单位脉冲响应[db,mag,pha,w]=freqz_m2(h,[1]);%计算实际滤波器的幅度响应delta_w=2*pi/1000;Ap=-(min(db(1:1:Wp/delta_w+1)))%实际通带纹波As=-round(max(db(Ws/delta_w+1:1:501)))%实际阻带纹波subplot(221)stem(n,hd)title('理想单位脉冲响应hd(n)')subplot(222)stem(n,w_ham)title('海明窗w(n)')subplot(223)stem(n,h)title('实际单位脉冲响应hd(n)')subplot(224)plot(w/pi,db)title('幅度响应(dB)')axis([0,1,-100,10])%--------------------------------------------------------function[db,mag,pha,w]=freqz_m2(b,a)%滤波器的幅值响应(相对、绝对)、相位响应%db:相对幅值响应%mag:绝对幅值响应%pha:相位响应%w采样频率;%b系统函数H(z)的分子项(对FIR,b=h)%a系统函数H(z)的分母项(对FIR,a=1)[H,w]=freqz(b,a,1000,'whole');H=(H(1:1:501))';w=(w(1:1:501))';mag=abs(H);%绝对幅值响应db=20*log10((mag+eps)/max(mag));%相对幅值响应pha=angle(H);%相位响应利用模拟Butterworth滤波器设计数字低通滤波器%exa4-8_pulseDFforexample4-8%usingButterworthanaloglowpassfiltertodesigndigitallowpassfilter%利用模拟Butterworth滤波器设计数字低通滤波器%脉冲响应不变法wp=0.2*pi;ws=0.3*pi;Rp=1;As=15;T=1;%性能指标Rip=10^(-Rp/20);Atn=10^(-As/20);OmgP=wp*T;OmgS=ws*T;[N,OmgC]=buttord(OmgP,OmgS,Rp,As,'s');%选取模拟滤波器的阶数[cs,ds]=butter(N,OmgC,'s');%设计出所需的模拟低通滤波器[b,a]=impinvar(cs,ds,T);%应用脉冲响应不变法进行转换%求得相对、绝对频响及相位、群迟延响应[db,mag,pha,grd,w]=freqz_m(b,a);%下面绘出各条曲线subplot(2,2,1);plot(w/pi,mag);title('幅频特性');xlabel('w(/pi)');ylabel('|H(jw)|');axis([0,1,0,1.1]);set(gca,'XTickMode','manual','XTick',[00.20.30.51]);set(gca,'YTickMode','manual','YTick',[0AtnRip1]);gridsubplot(2,2,2);plot(w/pi,db);title('幅频特性(dB)');xlabel('w(/pi)');ylabel('dB');axis([0,1,-40,5]);set(gca,'XTickMode','manual','XTick',[00.20.30.51]);set(gca,'YTickMode','manual','YTick',[-40-As-Rp0]);gridsub

1 / 13
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功