实验七FIR滤波器设计方法.docVIP

  • 56
  • 0
  • 约3.21千字
  • 约 5页
  • 2016-05-24 发布于重庆
  • 举报
实验七FIR滤波器设计方法

实验七 FIR滤波器设计方法 一、实验目的: 1、了解不同窗函数的性能指标; 2、根据指标选择窗函数设计FIR滤波器。 3、频率采样法设计FIR滤波器 二、实验内容: 自定滤波器的类型(低通,高通或带通)、设计指标(通带截止频率、通带波纹、阻带截止频率、阻带衰减) 1、根据指标选择合适的窗函数,用窗口设计法设计符合指标的FIR滤波器;并验证其性能是否满足预定指标。 2、根据指标选择合适的采样点数,用频率采样法设计符合指标的FIR滤波器;并验证其性能是否满足预定指标。 求出通带内的Rp和阻带内的As,或者用两行两列的子图分别将结果列出来。 3、求输入x(n)=[cos(w1n)+cos(w2n)]u(n)经过系统后的输出y(n)。其中w1位于通带内,w2位于阻带内,要求做一个两行两列的子图,第一个做x的时域波形,第二个做x的幅度谱,第三个做y的时域波形,第四个做y的幅度谱。 三、实验平台: MATLAB集成系统 四、调试和测试结果: 此处写程序的执行结果和实验过程中的调试经过、出现的错误和对应的解决方法 五、要求 1、学习参考程序,理解程序内容,在重要程序段后作出文字说明; 2、比较写出设计过程与步骤; 3、查看相应函数的MATLAB函数的帮助文档,学会使用该函数。 参考程序的要求: 设计模拟原型Butterworth滤波器: 通带边缘: 阻带边缘: 选择合适的窗函数,用窗口设计法设计符合指标的FIR滤波器。 参考程序: 模拟原型Butterworth滤波器: wp=0.4*pi;ws=0.6*pi;Rp=0.5;As=50; N=ceil((log10((10^(Rp/10)-1)/(10^(As/10)-1)))/(2*log(wp/ws))); omegac=wp/((10^(Rp/10)-1)^(1/(2*N))); [z,p,k]=buttap(N); p=p*omegac; k=k*omegac^N; B=real(poly(z)); b0=k; b=k*B;a=real(poly(p)); w=[0:1:500]*pi/500;H=freqs(b,a,w); mag=abs(H);db=20*log10((mag+eps)/max(mag));pha=angle(H); [ha,x,t]=impulse(b,a,100); subplot(2,2,1);plot(w/pi,mag);xlabel(w);ylabel(|H|);grid on subplot(2,2,2);plot(w/pi,pha);xlabel(w);ylabel(相位); grid on subplot(2,2,3);plot(w/pi,db);xlabel(w);ylabel(db); grid on subplot(2,2,4);plot(t,ha);xlabel(t);ylabel(ha(t)); axis([0,100,-0.2,0.4]);grid on 双线性变换法求得的数字Butterworth低通滤波器: wp=0.4*pi;ws=0.6*pi;Rp=0.5;As=50; T=2;OmegaP=(2/T)*tan(wp/2);OmegaS=(2/T)*tan(ws/2); N=ceil((log10((10^(Rp/10)-1)/(10^(As/10)-1)))/(2*log10(OmegaP/OmegaS))); OmegaC=OmegaP/((10^(Rp/10)-1)^(1/(2*N)));wn=2/pi*atan(OmegaC*T/2); [b,a]=butter(N,wn); [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); grd=grpdelay(b,a,w);// n=0:100; h=impz(b,a,n); subplot(2,2,1);plot(w/pi,mag);xlabel(w);ylabel(|H|); axis([0,1,0,1.15]);grid on subplot(2,2,2);plot(w/pi,pha);xlabel(w);ylabel(相位); axis([0,1,-4,4]); grid on subplot(2,2,3);plot(w/pi,db);xlabel(w);ylabel(db); axis([0,1,-140,20]); grid on subplot(2,2,4);stem(n,h);xlabel(n);ylabel(h(n)); axis([0,100

文档评论(0)

1亿VIP精品文档

相关文档