%例程4-1 利用冲激响应不变法设计数字低通滤波器%利用模拟巴特沃斯滤波器设计数字低通滤波器%冲激响应不变法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',[0 0.2 0.3 0.5 1]);set(gca,'YTickMode','manual','YTick',[0 Atn Rip 1]);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',[0 0.2 0.3 0.5 1]);set(gca,'YTickMode','manual','YTick',[-40 -As -Rp 0]);gridsubplot(2,2,3);plot(w/pi,pha/pi);title('相频特性');xlabel('w(/pi)');ylabel('pha(/pi)');axis([0,1,-1,1]);set(gca,'XTickMode','manual','XTick',[0 0.2 0.3 0.5 1]);gridsubplot(2,2,4);plot(w/pi,grd);title('群延时');xlabel('w(/pi)');ylabel('Sample');axis([0,1,0,12]);set(gca,'XTickMode','manual','XTick',[0 0.2 0.3 0.5 1]);grid%所使用的M文件函数function[db,mag,pha,grd,w]=freqz_m(b,a)%滤波器的幅值响应(相对、绝对)、相位响应及群延迟%Usage:[db,mag,pha,grd,w]=freqz_m(b,a) %500点对应[0,pi]%w 采样频率; b系统函数H(z)的分子项(对FIR,b=h)%a 系统函数H(z)的分母项(对FIR,a=1)[H,w]=freqz(b,a,500); %500点的复频响应mag=abs(H); %绝对幅值响应db=20*log10(mag/max(mag)); %相对幅值响应pha=angle(H); %相位响应grd=grpdelay(b,a,w); %群延迟响应

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐