资源描述:
《脉冲响应不变法设计IIR数字滤波器_matlab》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、实验三脉冲响应不变法设计IIR数字滤波器一、实验目的1.掌握利用脉冲响应不变法设计IIR数字滤波器的原理和具体方法。2.加深理解数字滤波器与连续时间滤波器之间的技术指标转化。3.掌握脉冲响应不变法设计IIR数字滤波器的优缺点及使用范围。二、实验内容1.利用巴特沃思模拟滤波器,通过脉冲响应不变法设计巴特沃思数字滤波器,数字滤波器的技术指标为采样周期为T=2程序代码T=2;%设置采样周期为2fs=1/T;%采样频率为周期倒数Wp=0.25*pi/T;Ws=0.35*pi/T;%设置归一化通带和阻带截止频率
2、Ap=20*log10(1/0.9);As=20*log10(1/0.18);%设置通带最大和最小衰减[N,Wc]=buttord(Wp,Ws,Ap,As,'s');%调用butter函数确定巴特沃斯滤波器阶数[B,A]=butter(N,Wc,'s');%调用butter函数设计巴特沃斯滤波器W=linspace(0,pi,400*pi);%指定一段频率值hf=freqs(B,A,W);%计算模拟滤波器的幅频响应subplot(2,1,1);plot(W/pi,abs(hf)/abs(hf(1)))
3、;%绘出巴特沃斯模拟滤波器的幅频特性曲线gridon;title('巴特沃斯模拟滤波器');xlabel('Frequency/Hz');ylabel('Magnitude');[D,C]=impinvar(B,A,fs);%调用脉冲响应不变法Hz=freqz(D,C,W);%返回频率响应subplot(2,1,2);plot(W/pi,abs(Hz)/abs(Hz(1)));%绘出巴特沃斯数字低通滤波器的幅频特性曲线8gridon;title('巴特沃斯数字滤波器');xlabel('Frequen
4、cy/Hz');ylabel('Magnitude');进行试验输出图像:观察workspace,可得模拟滤波器技术指标为N=8,Wc=0.4446。1.通过切比雪夫模拟滤波器,利用脉冲响应不变法设计切比雪夫数字滤波器,重做第一题。程序代码IT=2;%设置采样周期为2fs=1/T;%采样频率为周期倒数Wp=0.25*pi/T;Ws=0.35*pi/T;%设置归一化通带和阻带截止频率Ap=20*log10(1/0.9);As=20*log10(1/0.18);%设置通带最大和最小衰减8[N,Wc]=ch
5、eb1ord(Wp,Ws,Ap,As,'s');%调用cheb1ord函数确定切比雪夫I型滤波器阶数[B,A]=cheby1(N,Ap,Wc,'s');%调用cheby1函数设计切比雪夫I型滤波器W=linspace(0,pi,400*pi);%指定一段频率值hf=freqs(B,A,W);%计算模拟滤波器的幅频响应subplot(2,1,1);plot(W/pi,abs(hf)/abs(hf(1)));%绘出切比雪夫I型模拟滤波器的幅频特性曲线gridon;title('切比雪夫I型模拟滤波器');
6、xlabel('Frequency/Hz');ylabel('Magnitude');[D,C]=impinvar(B,A,fs);%调用脉冲响应不变法Hz=freqz(D,C,W);%返回频率响应subplot(2,1,2);plot(W/pi,abs(Hz)/abs(Hz(1)));%绘出切比雪夫I型数字低通滤波器的幅频特性曲线gridon;title('切比雪夫I型数字滤波器');xlabel('Frequency/Hz');ylabel('Magnitude');进行试验I输出图像:8观察wo
7、rkspace,可得模拟滤波器技术指标为N=4,Wc=0.3927。程序代码IIT=2;%设置采样周期为2fs=1/T;%采样频率为周期倒数Wp=0.25*pi/T;Ws=0.35*pi/T;%设置归一化通带和阻带截止频率Ap=20*log10(1/0.9);As=20*log10(1/0.18);%设置通带最大和最小衰减[N,Wc]=cheb2ord(Wp,Ws,Ap,As);%调用cheb2ord函数确定切比雪夫II型滤波器阶数[B,A]=cheby2(N,Ap,Wc);%调用cheby2函数设计
8、切比雪夫II型滤波器W=linspace(0,pi,400*pi);%指定一段频率值hf=freqs(B,A,W);%计算模拟滤波器的幅频响应subplot(2,1,1);plot(W/pi,abs(hf)/abs(hf(1)));%绘出切比雪夫II型模拟滤波器的幅频特性曲线gridon;title('切比雪夫II型模拟滤波器');xlabel('Frequency/Hz');ylabel('Magnitude');[D,C]=impinvar(B,A,