logo资料库

实验四 IIR数字滤波器设计及软件实现.docx

第1页 / 共7页
第2页 / 共7页
第3页 / 共7页
第4页 / 共7页
第5页 / 共7页
第6页 / 共7页
第7页 / 共7页
资料共7页,全文预览结束
实验四 IIR数字滤波器设计及软件实现 %N 为信号 st 的长度。 %第 1 路调幅信号的载波频率 fc1=1000Hz, %第 1 路调幅信号的调制信号频率 fm1=100Hz %第 2 路调幅信号的载波频率 fc2=500Hz %第 2 路调幅信号的调制信号频率 fm2=50Hz %第 3 路调幅信号的载波频率 fc3=250Hz %第 3 路调幅信号的调制信号频率 fm3=25Hz 程序代码: function st=mstg %产生信号序列向量 st,并显示 st 的时域波形和频谱 %st=mstg 返回三路调幅信号相加形成的混合信号,长度 N=1600 N=1600 Fs=10000;T=1/Fs;Tp=N*T; %采样频率 Fs=10kHz,Tp 为采样时间 t=0:T:(N-1)*T;k=0:N-1;f=k/Tp; fc1=Fs/10; fm1=fc1/10; fc2=Fs/20; fm2=fc2/10; fc3=Fs/40; fm3=fc3/10; xt1=cos(2*pi*fm1*t).*cos(2*pi*fc1*t); %产生第 1 路调幅信号 xt2=cos(2*pi*fm2*t).*cos(2*pi*fc2*t); %产生第 2 路调幅信号 xt3=cos(2*pi*fm3*t).*cos(2*pi*fc3*t); %产生第 3 路调幅信号 st=xt1+xt2+xt3; fxt=fft(st,N); %====以下为绘图部分,绘制 st 的时域波形和幅频特性曲线==================== subplot(3,1,1) plot(t,st);grid;xlabel('t/s');ylabel('s(t)'); axis([0,Tp/8,min(st),max(st)]);title('(a) s(t)的波形') subplot(3,1,2) stem(f,abs(fxt)/max(abs(fxt)),'.');grid;title('(b) s(t)的频谱') axis([0,Fs/5,0,1.2]); xlabel('f/Hz');ylabel('幅度') %*********低通滤波器的实现******** wpz=2*pi*275/10000;wsz=2*pi*450/10000;%低通滤波器的通,阻带边界频率 %三路调幅信号相加 %计算信号 st 的频谱
rp=0.1;rs=60; T=2;Fs=1/T; %将数字低通滤波器指标转换为模拟滤器低通指标 wplp=2/T*tan(wpz/2); wslp=2/T*tan(wsz/2); [N,Wn]=ellipord(wplp,wslp,rp,rs,'s'); [num,den]=ellip(N,rp,rs,Wn,'s'); %调用ellip函数计算模拟低通滤波器的频率响应 [num1,den1]=bilinear(num,den,Fs);%调用bilinear函数计算数字低通滤波器频率响应 y1n=filter(num1,den1,st);%滤波器软件实现 %低通滤波器设计与实现绘图部分 N1=500; f1=0:N1-1; Y1k=fft(y1n,N1);%y1n的DFT [h,omega] = freqz(num1,den1,256); figure(1);subplot(3,1,1); plot (omega/pi,20*log10(abs(h)));grid;%绘制低通滤波器的冲激函数 axis([0,1,-80,10]); xlabel('\omega/\pi'); ylabel('Gain, dB'); title('IIR Elliptic Lowpass Filter'); subplot(3,1,2); plot(t,y1n);grid;%绘制信号经低通滤波器后y1n的图形曲线 xlabel('t/s'); ylabel('y1(n)'); title('y1(n)的波形'); subplot(3,1,3); stem(f1,abs(Y1k)/max(abs(Y1k)),'.');grid; % 绘制Y1k图形曲线 title('y1(n)的频谱'); xlabel('f/HZ');ylabel('幅度');
B d , i n a G IIR Elliptic Lowpass Filter 0 -20 -40 -60 -80 0 0.1 0.2 0.3 0.4 0.5 / 0.6 0.7 0.8 0.9 1 ) n ( 1 y 1 0 -1 0 1 度 幅 0.5 0 0 y1(n)的 波 形 0.02 0.04 0.06 0.08 t/s y1(n)的 频 谱 0.1 0.12 0.14 0.16 50 100 150 200 250 f/HZ 300 350 400 450 500 %*********带通滤波器实现******** wp1z=2*pi*450/10000;wp2z=2*pi*550/10000; %带通滤波器的通,阻带边界频率 ws1z=2*pi*275/10000;ws2z=2*pi*900/10000; rp=0.1;rs=60; T=2;Fs=1/T; %将数字带通滤波器指标转换为模拟滤器带通指标 wp1bp=2/T*tan(wp1z/2); wp2bp=2/T*tan(wp2z/2); ws1bp=2/T*tan(ws1z/2); ws2bp=2/T*tan(ws2z/2); %将模拟带通滤波器指标转换为模拟滤器低通通指标 ws2bp=wp1bp*wp2bp/ws1bp; w02=ws1bp*ws2bp; bw=wp2bp-wp1bp; wplp=1; wslp=(w02-ws1bp^2)/ws1bp/bw; [N,Wn]=ellipord(wplp,wslp,rp,rs,'s');
[num,den]=ellip(N,rp,rs,Wn,'s'); %调用ellip函数计算模拟带通通滤波器的频率响应 [num,den]=lp2bp(num,den,sqrt(w02),bw);%调用函数计算模拟低通滤波器的频率响应 [num2,den2]=bilinear(num,den,Fs); %调用bilinear函数计算数字带通滤波器频率响应 [h,omega] = freqz(num2,den2,256); %滤波器软件实现 %带通滤波器设计与软件实现绘图部分 y2n=filter(num2,den2,st); N2=900; Y2k=fft(y2n,N2); figure(2);subplot(3,1,1); plot (omega/pi,20*log10(abs(h)));grid; %绘制带通滤波器的冲激函数 axis([0,1,-80,10]); xlabel('\omega/\pi'); ylabel('Gain, dB'); title('IIR Elliptic bandpass Filter'); subplot(3,1,2); plot(t,y2n);grid; %绘制信号经低通滤波器后y2n的图形曲线 xlabel('t/s'); ylabel('y2(n)'); title('y2(n)的波形'); subplot(3,1,3); stem(abs(Y2k)/max(abs(Y2k)),'.');grid; % 绘制Y2k图形曲线 title('y2(n)的频谱'); xlabel('f/HZ');ylabel('幅度');
B d , i n a G IIR Elliptic bandpass Filter 0 -20 -40 -60 -80 0 0.1 0.2 0.3 0.4 0.5 / 0.6 0.7 0.8 0.9 1 ) n ( 2 y 1 0 -1 0 1 度 幅 0.5 0 0 y2(n)的 波 形 0.02 0.04 0.06 0.08 t/s y2(n)的 频 谱 0.1 0.12 0.14 0.16 100 200 300 400 f/HZ 500 600 700 800 900 %********高通滤波器的实现 ******** wpz=2*pi*900/10000;wsz=2*pi*550/10000; %高通滤波器的通,阻带边界频率 rp=0.1;rs=60; T=2;Fs=1/T; %将数字高通通滤波器指标转换为模拟滤器高通通指标 wphp=2/T*tan(wpz/2); wshp=2/T*tan(wsz/2); %将模拟高通通滤波器指标转换为模拟滤器低通通通指标 wplp=1; wslp=wphp/wshp; [N,Wn]=ellipord(wplp,wslp,rp,rs,'s'); [num,den]=ellip(N,rp,rs,Wn,'s'); %调用ellip函数计算模拟高通滤波器的频率响应 [num,den]=lp2hp(num,den,wphp); ;%调用函数计算模拟低通滤波器的频率响应 [num3,den3]=bilinear(num,den,Fs); %调用bilinear函数计算数字高通滤波器频率响应 [h,omega] = freqz(num3,den3,256); %滤波器软件实现 y3n=filter(num3,den3,st);
%高通滤波器设计与软件实现绘图部分 N3=1100; Y3k=fft(y3n,N3); figure(3);subplot(3,1,1); plot (omega/pi,20*log10(abs(h)));grid; %绘制带通滤波器的冲激函数 axis([0,1,-80,10]); xlabel('\omega/\pi'); ylabel('Gain, dB'); title('IIR Elliptic Hignpass Filter'); subplot(3,1,2); plot(t,y3n);grid; %绘制信号经低通滤波器后y3n的图形曲线 xlabel('t/s'); ylabel('y3(n)'); title('y3(n)的波形'); subplot(3,1,3); stem(abs(Y3k)/max(abs(Y3k)),'.');grid; % 绘制Y3k图形曲线 title('y3(n)频谱'); xlabel('f/HZ');ylabel('幅度'); IIR Elliptic Hignpass Filter B d , i n a G 0 -20 -40 -60 -80 0 0.1 0.2 0.3 0.4 0.5 / 0.6 0.7 0.8 0.9 1 ) n ( 3 y 2 0 -2 0 1 度 幅 0.5 0 0 y3(n)的 波 形 0.02 0.04 0.06 0.08 t/s y3(n)的 频 谱 0.1 0.12 0.14 0.16 200 400 600 f/HZ 800 1000 1200
分享到:
收藏