实验二IIR数字滤波器设计实验
一、 实验目的
1. 通过仿真冲激响应不变法和双线性变换法
2. 掌握滤波器性能分析的基本方法 二、 实验要求
1. 设计带通IIR滤波器
2. 按照冲激响应不变法设计滤波器系数 3. 按照双线性变换法设计滤波器系数 4. 分析幅频特性和相频特性
5. 生成一定信噪比的带噪信号,并对其滤波,对比滤波前后波形和频谱
三、 实验基本原理
(一) IIR模拟滤波器与数字滤波器
IIR数字滤波器的设计以模拟滤波器设计为基础,常用的类型分为巴特沃斯(Butterworth)、切比雪夫(Chebyshev)Ⅰ型、切比雪夫Ⅱ型、贝塞尔(Bessel)、椭圆等多种。在MATLAB信号处理工具箱里,提供了这些类型的IIR数字滤波器设计子函数。 (二)性能指标
1.假设带通滤波器要求为保留6000hz~~7000hz频段,滤除小于2000hz和大宇9000hz频段 2.通带衰减设为3Db,阻带衰减设为30dB,双线性变换法中T取1s.
四、 实验步骤
1.初始化指标参数
2.计算模拟滤波器参数并调用巴特沃斯函数产生模拟滤波器
3.利用冲激响应不变法和双线性变换法求数字IIR滤波器的系统函数Hd (z)
4.分别画出两种方法的幅频特性和相频特性曲线 5.生成一定信噪比的带噪信号 6.画出带噪信号的时域图和频谱图
6.对带噪信号进行滤波,并画出滤波前后波形图和频谱图
五、实验内容
%4.2编写MATLAB程序,设计一个切比雪夫模拟低通滤波器,通带截止频率fp=5kHz,阻带截止频率fs=10kHz,通带衰减大于30dB,要求画出滤波器频率响应曲线,并写出其系统函数。
Fs=input('Normalized sampling frequency Fs ='); %输入抽样频率 Wp=tan(2*pi*5000/Fs/2) %通带截止频率 Ws=tan(2*pi*10000/Fs/2) %阻带截止频率 Rp=1; %通带衰减 Rs=30; %阻带衰减
[N,Wn]=cheb1ord(Wp,Ws,Rp,Rs,'s'); %返回切比雪夫I型的阶数和截止频率
[b,a]=cheby1(N,Rp,Wn,'s'); %返回拉普拉斯变换后分子系数和分母系数的向量
[num,den]=bilinear(b,a,0.5) %返回双线性变换后分子系数和分母系数的向量
[h,omega]=freqz(num,den,256); %返回Z变换的频率响应,h为响应,omega为角频率
plot(omega/pi,20*log10(abs(h))),grid; %画出切比雪夫滤波器的图 xlabel('\\omega/\\pi');ylabel('gain,dB'); title('type1 chebyshev lowpass filter');
图4.2切比雪夫I 型低通滤波器
%4.3设计一个巴特沃斯型高通滤波器,并用MATLAB模拟结果,通带截止频率fp=200Hz阻带截止频率fs=100Hz,αp=3dB,阻带的最小衰减αs=15dB。 %该题的抽样频率用4000
Fs=input('Normalized sampling frequency Fs ='); %输入抽样频率 Wp=tan(2*pi*200/Fs/2) %通带截止频率 Ws=tan(2*pi*100/Fs/2) %阻带截止频率 Rp=3; %通带衰减 Rs=15; %阻带衰减
[N,Wn]=buttord(Wp,Ws,Rp,Rs,'s'); %返回巴特沃斯的阶数和截止频率
[b,a]=butter(N,Wn,'s'); %返回拉普拉斯变换后分子系数和分母系数的向量
[b1,a1]=lp2hp(b,a,ws); %返回双线性变换后分子系数和分母系数的向量
[num,den]=bilinear(b1,a1,0.5) %返回双线性变换后分子系数和分母系数的向量
[h,omega]=freqz(num,den,256); %返回Z变换的频率响应,h为响应,omega为角频率
plot(omega/pi,20*log10(abs(h))),grid; %画出巴特沃斯高通滤波器的图 xlabel('\\omega/\\pi');ylabel('gain,dB');
title('Butterworth highpass filter');
图4.3巴特沃斯高通滤波器
%4.4设计一个数字带通滤波器,并用MATLAB验证结果,要求通带为300~400Hz,通带最大衰减为3dB,在200Hz以下500Hz以上衰减不小于18dB,抽样频率为2000Hz。 Fs=input('Normalized sampling frequency Fs ='); %输入抽样频率 Wp1=tan(2*pi*300/Fs/2); %通带1截止频率 Wp2=tan(2*pi*400/Fs/2); %通带2截止频率 Ws1=tan(2*pi*200/Fs/2); %阻带1截止频率 Ws2=tan(2*pi*500/Fs/2); %阻带2截止频率 Rp=3; %通带衰减 Rs=18; %阻带衰减 Wp=1; %归一化的通带截止频率 Wo=(Wp1+Wp2)/2; %通带中心角频率 Bw=Wp2-Wp1; %通带带宽 Ws=(((Wp1+Wp2)/2)^2-Ws1^2)/(Ws1*(Wp2-Wp1)); %阻带截止频率 [N,Wn]=buttord(Wp,Ws,3,18,'s'); %返回巴特沃斯的阶数和截止频率
[b,a]=butter(N,Wn,'s'); %返回拉普拉斯变换后分子系数和分母系数的向量
[b1,a1]=lp2bp(b,a,Wo,Bw); %返回高通滤波器拉式变换后的分子系数和分母系数的向量
[num,den]=bilinear(b1,a1,0.5); %返回双线性变换后分子系数和分母系数的向量
[h,omega]=freqz(num,den,256); %返回Z变换的频率响应,h为响应,
omega为角频率
plot(omega/pi,20*log10(abs(h)));grid; xlabel('\\omega/\\pi'); ylabel('gain,dB');
title('Butterworth bandpass IIR digital filter');
%画出数字带通滤波器的图
图4.4数字带通滤波器
%4.5一个数字系统的抽样频率为1000Hz,已知该系统收到频率为100Hz噪声的干扰,设计一个数字带阻滤波器去掉该噪声。要求3dB的带边频率为95Hz和105Hz,阻带衰减不小于14dB。
Fs=1000; %输入抽样频率 Wp1=tan(2*pi*90/Fs/2); %通带1截止频率 Wp2=tan(2*pi*110/Fs/2); %通带2截止频率 Ws1=tan(2*pi*95/Fs/2); %阻带1截止频率 Ws2=tan(2*pi*105/Fs/2); %阻带2截止频率 Rp=3; %通带衰减 Rs=14; %阻带衰减 Wp=1; %归一化的通带截止频率 Wo=(Ws1+Ws2)/2; %z阻带中心角频率 Bw=Ws2-Ws1; %带阻带宽 Ws=Wp1*Bw/(Wo^2-Wp1^2); %带阻的阻带截止频率 [N,Wn]=ellipord(Wp,Ws,Rp,Rs,'s'); %返回椭圆滤波器的阶数和截止频率
[b,a]=ellip(N,Rp,Rs,Wn,'s'); %返回椭圆滤波器分子系数和分母系数的向量
[b1,a1]=lp2bs(b,a,Wo,Bw); %返回带阻滤波器拉氏变换后的分子系数和分母系数的向量
[num,den]=bilinear(b1,a1,0.5); %返回双线性变换后分子系数和分
母系数的向量
[h,omega]=freqz(num,den,256); omega为角频率
plot(omega/pi,20*log10(abs(h)));grid; xlabel('\\omega/\\pi'); ylabel('gain,dB');
title('Butterworth bandpass IIR digital filter');
%返回Z变换的频率响应,h为响应,%画出数字带阻滤波器的图
图4.5数字带阻滤波器
六、实验心得
通过实验在MATLAB中编写程序,设计不同类型的滤波器,结合课本例子,自己根据课本的知识编写程序,调试,运行,直到出现实验结果,这一步一步的过程令我进一步的加深了对滤波器设计原理的理解,同时学会了滤波器的设计。
因篇幅问题不能全部显示,请点此查看更多更全内容