1、物理与电子信息工程学院实验报告实验课程名称:数字信号处理实验名称: IIR数字滤波器设计及软件实现 班 级: 1012341 姓 名: 严娅 学 号: 101234153 成 绩:_ 实验时间: 2012 年 12月 13 日 一、实验目的(1)熟悉用双线性变换法设计 IIR数字滤波器的原理与方法;(2)学会调用 MATLAB信号处理工具箱中滤波器设计函数设计各种 IIR数字滤波器,学会根据滤波需求确定滤波器指标参数。(3)掌握 IIR数字滤波器的 MATLAB实现方法。(3)通过观察滤波器输入输出信号的时域波形及其频谱,建立数字滤波的概念。2、实验原理IIR 数字滤波器采用递归型结构,即结构
2、上带有反馈环路。IIR滤波器运算结构通常由延时、乘以系数和相加等基本运算组成,可以组合成直接型、正准型、级联型、并联型四种结构形式,都具有反馈回路。由于运算中的舍入处理,使误差不断累积,有时会产生微弱的寄生振荡。IIR 数字滤波器在设计上可以借助成熟的模拟滤波器的成果,如巴特沃斯、契比雪夫和椭圆滤波器等,有现成的设计数据或图表可查,其设计工作量比较小,对计算工具的要求不高。在设计一个 IIR数字滤波器时,我们根据指标先写出模拟滤波器的公式,然后通过一定的变换,将模拟滤波器的公式转换成数字滤波器的公式。利用 MATLAB信号处理工具箱中的滤波器设计和分析工具(FDATool)可以很方便地设计出符
3、合应用要求的未经量化的 IIR数字滤波器。三、 实验内容及步骤(1)调用信号产生函数 mstg产生由三路抑制载波调幅信号相加构成的复合信号 st,该函数还会自动绘图显示 st的时域波形和幅频特性曲线,如图 10.4.1所示。由图可见,图 10.4.1 三路调幅信号 st的时域波形和幅频特性曲线三路信号时域混叠无法在时域分离。但频域是分离的,所以可以通过滤波的方法在频域分离。(2)通过观察 st的幅频特性曲线,可以用三个滤波器(低通滤波器、带通滤波器、高通滤波器)将它们分离,根据幅频特性曲线分别确定滤波器的通带截止频率和阻带截止频率,并要求滤波器的通带最大衰减为 0.1dB,阻带最小衰减为 60
4、dB。提示:抑制载波单频调幅信号的数学表示式为 0 001()cos2)s()cos(2)cos(2)ccctftftftft其中, 称为载波,f c为载波频率, 称为单频调制c t信号,f 0为调制正弦波信号频率,且满足 。由上式可见,所谓0cf抑制载波单频调幅信号,就是 2个正弦信号相乘,它有 2个频率成分:和频 和差频 ,这 2个频率成分关于载波频率 fc对称。0cf0cf所以,1 路抑制载波单频调幅信号的频谱图是关于载波频率 fc对称的 2根谱线,其中没有载频成分,故取名为抑制载波单频调幅信号。容易看出,图 10.4.1中三路调幅信号的载波频率分别为250Hz、500Hz、1000Hz
5、。(3)编写程序调用 MATLAB滤波器设计函数 ellipord和 ellip分别设计这三个椭圆滤波器,并绘图显示其幅频响应特性曲线。 (4)调用滤波器实现函数 filter,用三个滤波器分别对 st进行滤波,分离出 st中的三路不同载波频率的调幅信号 y1(n)、y 2(n)和 y3(n), 并绘图显示 y1(n)、y2(n)和 y3(n)的时域波形,观察分离效果。(5)改变滤波器参数中的阻带最小衰减为 100dB,重复步骤(4)内容,并对比阻带最小衰减为 60dB和 100dB时滤波器的损耗函数曲线和分离出的波形的区别。(6)修改源程序,要求能分离出每一根单独频率的调制信号并绘制波形,例
6、如,第一根频率 Fo1=225Hz,可用低通滤波器实现,最后一根频率 Fo6=1100Hz,可用高通滤波器实现,中间的每一根可用带通滤波器实现。四、实验程序清单1、信号产生函数 mstg清单function st=mstg%产生信号序列向量 st,并显示 st的时域波形和频谱%st=mstg 返回三路调幅信号相加形成的混合信号,长度 N=1600N=1600 ; %N 为信号 st的长度。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; %第 1路调幅信号的载波频率 fc
7、1=1000Hz,fm1=fc1/10; %第 1路调幅信号的调制信号频率 fm1=100Hzfc2=Fs/20; %第 2路调幅信号的载波频率 fc2=500Hzfm2=fc2/10; %第 2路调幅信号的调制信号频率 fm2=50Hzfc3=Fs/40; %第 3路调幅信号的载波频率 fc3=250Hz,fm3=fc3/10; %第 3路调幅信号的调制信号频率 fm3=25Hzxt1=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*
8、pi*fm3*t).*cos(2*pi*fc3*t); %产生第 3路调幅信号st=xt1+xt2+xt3; %三路调幅信号相加fxt=fft(st,N); %计算信号 st的频谱%绘制 st的时域波形和幅频特性曲线=subplot(2,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(2,1,2)stem(f,abs(fxt)/max(abs(fxt),.);grid;title(b) s(t)的频谱)axis(0,Fs/5,0,1.2);xlabe
9、l(f/Hz);ylabel(幅度)2、实验程序清单%实验 4程序 exp4.m% IIR数字滤波器设计及软件实现clear all;close all=Fs=10000;T=1/Fs; %采样频率%调用信号产生函数 mstg产生由三路抑制载波调幅信号相加构成的复合信号 st st=mstg; %低通滤波器设计与实现=fp=280;fs=450;wp=2*fp/Fs;ws=2*fs/Fs;rp=0.1;rs=60; %DF指标(低通滤波器的通、阻带边界频)N,wp=ellipord(wp,ws,rp,rs); %调用 ellipord计算椭圆DF阶数 N和通带截止频率 wpB,A=ellip(
10、N,rp,rs,wp); %调用 ellip计算椭圆带通 DF系统函数系数向量 B和 Ay1t=filter(B,A,st); %滤波器软件实现% 低通滤波器绘图部分=figure(2);subplot(2,1,1);myplot(B,A); %调用绘图函数 myplot绘制损耗函数曲线yt=y_1(t);subplot(2,1,2);tplot(y1t,T,yt); %调用绘图函数 tplot绘制滤波器输出波形%带通滤波器设计与实现=fsl=275;fpl=440;fpu=560;fsu=900;wp=2*fpl/Fs,2*fpu/Fs;ws=2*fsl/Fs,2*fsu/Fs;rp=0.1
11、;rs=60; N,wp=ellipord(wp,ws,rp,rs); %调用 ellipord计算椭圆DF阶数 N和通带截止频率 wpB,A=ellip(N,rp,rs,wp); %调用 ellip计算椭圆带通DF系统函数系数向量 B和 Ay2t=filter(B,A,st); %滤波器软件实现% 带通滤波器绘图部分=figure(3);subplot(2,1,1);myplot(B,A); %调用绘图函数 myplot绘制损耗函数曲线yt=y_2(t);subplot(2,1,2);tplot(y2t,T,yt); %调用绘图函数 tplot绘制滤波器输出波形%高通滤波器设计与实现=fs=
12、600;fp=890;wp=2*fp/Fs;ws=2*fs/Fs;rp=0.1;rs=60; %DF指标(低通滤波器的通、阻带边界频)N,wp=ellipord(wp,ws,rp,rs); %调用 ellipord计算椭圆DF阶数 N和通带截止频率 wpB,A=ellip(N,rp,rs,wp,high); %调用 ellip计算椭圆带通 DF系统函数系数向量 B和 Ay3t=filter(B,A,st); %滤波器软件实现% 高低通滤波器绘图部分figure(4);subplot(2,1,1);myplot(B,A); %调用绘图函数 myplot绘制损耗函数曲线yt=y_3(t);subp
13、lot(2,1,2);tplot(y3t,T,yt); %调用绘图函数 tplot绘制滤波器输出波形3、对程序的修改(1)改变阻带最小衰减%实验 4程序 exp4.m% IIR数字滤波器设计及软件实现clear all;close all=Fs=10000;T=1/Fs; %采样频率%调用信号产生函数 mstg产生由三路抑制载波调幅信号相加构成的复合信号 st st=mstg; %低通滤波器设计与实现= fp=280;fs=450;wp=2*fp/Fs;ws=2*fs/Fs;rp=0.1;rs=100; %DF指标(低通滤波器的通、阻带边界频)N,wp=ellipord(wp,ws,rp,rs
14、); %调用 ellipord计算椭圆DF阶数 N和通带截止频率 wpB,A=ellip(N,rp,rs,wp); %调用 ellip计算椭圆带通 DF系统函数系数向量 B和 Ay1t=filter(B,A,st); %滤波器软件实现(将源程序中所有的 rs=60改成 rs=100,即阻带最小衰减为100dB。 )(2)滤出单独一根频谱线并绘制波形%低通滤波器设计与实现滤出 Fo1=225Hz 的频率=fp=230;fs=270;wp=2*fp/Fs;ws=2*fs/Fs;rp=0.1;rs=60; %DF指标(低通滤波器的通、阻带边界频)N,wp=ellipord(wp,ws,rp,rs);
15、 %调用 ellipord计算椭圆DF阶数 N和通带截止频率 wpB,A=ellip(N,rp,rs,wp); %调用 ellip计算椭圆带通 DF系统函数系数向量 B和 Ay1t=filter(B,A,st); %滤波器软件实现% 低通滤波器绘图部分=figure(2);subplot(2,1,1);myplot(B,A); %调用绘图函数 myplot绘制损耗函数曲线yt=y_1(t);subplot(2,1,2);tplot(y1t,T,yt); %调用绘图函数 tplot绘制滤波器输出波形%带通滤波器设计与实现滤出 Fo5=900Hz=fsl=700;fpl=800;fpu=1000;
16、fsu=1100;wp=2*fpl/Fs,2*fpu/Fs;ws=2*fsl/Fs,2*fsu/Fs;rp=0.1;rs=60; N,wp=ellipord(wp,ws,rp,rs); %调用 ellipord计算椭圆DF阶数 N和通带截止频率 wpB,A=ellip(N,rp,rs,wp); %调用 ellip计算椭圆带通DF系统函数系数向量 B和 Ay2t=filter(B,A,st); %滤波器软件实现% 带通滤波器绘图部分=figure(3);subplot(2,1,1);myplot(B,A); %调用绘图函数 myplot绘制损耗函数曲线yt=y_2(t);subplot(2,1,
17、2);tplot(y2t,T,yt); %调用绘图函数 tplot绘制滤波器输出波形%高通滤波器设计与实现滤出最后一根 Fo6=1100Hz=fs=900;fp=1000;wp=2*fp/Fs;ws=2*fs/Fs;rp=0.1;rs=60; %DF指标(低通滤波器的通、阻带边界频)N,wp=ellipord(wp,ws,rp,rs); %调用 ellipord计算椭圆DF阶数 N和通带截止频率 wpB,A=ellip(N,rp,rs,wp,high); %调用 ellip计算椭圆带通 DF系统函数系数向量 B和 Ay3t=filter(B,A,st); %滤波器软件实现% 高低通滤波器绘图部
18、分figure(4);subplot(2,1,1);myplot(B,A); %调用绘图函数 myplot绘制损耗函数曲线yt=y_3(t);subplot(2,1,2);tplot(y3t,T,yt); %调用绘图函数 tplot绘制滤波器输出波形五、实验程序运行结果实验 4 程序 exp4.m 运行结果如下图所示。由图可见,三个分离滤波器指标参数选取正确,算耗函数曲线达到所给指标。分离出的三路信号 y1(n),y2(n)和 y3(n)的波形是抑制载波的单频调幅波。以及改变阻带最小衰减后滤波器损耗函数曲线和三路信号波形,修改滤波器参数滤出单独一根频率时滤波器损耗函数曲线及分离出的单边带信号波
19、形。三路调幅信号 st低通滤波器带通滤波器高通滤波器 Rs=100dB低通滤波器带通滤波器高通滤波器只滤出单独一根频谱得到正弦波Fo1=225HzFo2=275HzFo3=450HzFo4=550HzFo5=900HzFo6=1100Hz6、实验心得及体会1、通过这次实验,我深深体会到滤波器在数字信号处理中的重要地位,滤波器在处理实际问题应用中也是十分有用的。 2、滤波器可用于从噪声中提取信号、信号分离、波形形成、调制解调器等。本次实验的目的是从噪声干扰中提取有用信号,再根据频谱特性,设计滤波器将三路信号分离出来。3、用双线性变换法设计滤波器时,根据实验要求选取滤波器类型和选取合理正确的滤波器指标参数是实验成功与否的关键所在,参数选取不得当,很可能不能实现滤波的作用,要想滤出漂亮的波形,必须反复实验选取最佳指标参数,已获得最佳滤波效果。4、每次实验必须明确其实验具体目的和要求,掌握其原理才能真正理解实验意义,以便更好的掌握所学知识,真正学以致用。5、在实验过程中,根据自己的想法修改程序滤出想要的波,是十分有趣的事。比如改变阻带最小衰减,使其增大,相应滤波器的损耗函数更接近砖墙结构;通过改变滤波器参数就能滤出单独一根频率的波,得到正弦波,椭圆滤波器设计灵活,简单易行,效果明显,学好它,真的是十分有用的啊!