实验报告
实验课程名称:数字信号处理
实验名称: IIR数字滤波器设计及软件实现
班 级: 1012341
姓 名: 严娅
学 号: 101234153
成 绩:_______
实验时间: 2012年12月13 日
一、实验目的
(1)熟悉用双线性变换法设计IIR数字滤波器的原理与方法;
(2)学会调用MATLAB信号处理工具箱中滤波器设计函数设计各种IIR数字滤波器,学会根据滤波需求确定滤波器指标参数。
(3)掌握IIR数字滤波器的MATLAB实现方法。
(3)通过观察滤波器输入输出信号的时域波形及其频谱,建立数字滤波的概念。
二、实验原理
IIR数字滤波器采用递归型结构,即结构上带有反馈环路。IIR滤波器运算结构通常由延时、乘以系数和相加等基本运算组成,可以组合成直接型、正准型、级联型、并联型四种结构形式,都具有反馈回路。由于运算中的舍入处理,使误差不断累积,有时会产生微弱的寄生振荡。IIR数字滤波器在设计上可以借助成熟的模拟滤波器的成果,如巴特沃斯、契比雪夫和椭圆滤波器等,有现成的设计数据或图表可查,其设计工作量比较小,对计算工具的要求不高。在设计一个IIR数字滤波器时,我们根据指标先写出模拟滤波器的公式,然后通过一定的变换,将模拟滤波器的公式转换成数字滤波器的公式。利用MATLAB信号处理工具箱中的滤波器设计和分析工具(FDATool)可以很方便地设计出符合应用要求的未经量化的IIR数字滤波器。
三、 实验内容及步骤
(1)调用信号产生函数mstg产生由三路抑制载波调幅信号相加构成的复合信号st,
该函数还会自动绘图显示st的时域波形和幅频
特性曲线,如图10.4.1所示。由图可见,
图10.4.1 三路调幅信号st的时域波形和幅频特性曲线
三路信号时域混叠无法在时域分离。但频域是分离的,所以可以通过滤波的方法在频域分离。
(2)通过观察st的幅频特性曲线,可以用三个滤波器(低通滤波器、带通滤波器、高通滤波器)将它们分离,根据幅频特性曲线分别确定滤波器的通带截止频率和阻带截止频率,并要求滤波器的通带最大衰减为0.1dB,阻带最小衰减为60dB。
提示:抑制载波单频调幅信号的数学表示式为
1s(t)cos(2f0t)cos(2fct)[cos(2(fcf0)t)cos(2(fcf0)t)]2
其中,cos(2fct)称为载波,fc为载波频率,cos(2f0t)称为单频调制信号,f0为调制正弦波信号频率,且满足fcf0。由上式可见,所谓抑制载波单频调幅信号,就是2个正弦信号相乘,它有2个频率成分:和频fcf0和差频fcf0,这2个频率成分关于载波频率fc对称。所以,1路抑制载波单频调幅信号的频谱图是关于载波频率fc对称的2根谱线,其中没有载频成分,故取名为抑制载波单频调幅信号。容易看出,图10.4.1中三路调幅信号的载波频率分别为250Hz、500Hz、1000Hz。
(3)编写程序调用MATLAB滤波器设计函数ellipord和ellip分别设计这三个椭圆滤波器,并绘图显示其幅频响应特性曲线。
(4)调用滤波器实现函数filter,用三个滤波器分别对st进行滤波,分离出st中的三路不同载波频率的调幅信号y1(n)、y2(n)和y3(n), 并绘图显示y1(n)、y2(n)和y3(n)的时域波形,观察分离效果。
(5)改变滤波器参数中的阻带最小衰减为100dB,重复步骤(4)内容,并对比阻带最小衰减为60dB和100dB时滤波器的损耗函数曲线和分离出的波形的区别。
(6)修改源程序,要求能分离出每一根单独频率的调制信号并绘制波形,例如,第一根频率Fo1=225Hz,可用低通滤波器实现,最后一根频率Fo6=1100Hz,可用高通滤波器实现,中间的每一根可用带通滤波器实现。
四、实验程序清单
1、信号产生函数mstg清单
function st=mstg
%产生信号序列向量st,并显示st的时域波形和频谱
%st=mstg 返回三路调幅信号相加形成的混合信号,长度N=1600
N=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路调幅信号的载波频率fc1=1000Hz,
fm1=fc1/10; %第1路调幅信号的调制信号频率fm1=100Hz
fc2=Fs/20; %第2路调幅信号的载波频率fc2=500Hz
fm2=fc2/10; %第2路调幅信号的调制信号频率fm2=50Hz
fc3=Fs/40; %第3路调幅信号的载波频率fc3=250Hz,
fm3=fc3/10; %第3路调幅信号的调制信号频率fm3=25Hz
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的频谱
%绘制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]);
xlabel('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和通带截止频
率wp
[B,A]=ellip(N,rp,rs,wp); %调用ellip计算椭圆带通DF系统函数系数向量B和A
y1t=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;rs=60;
[N,wp]=ellipord(wp,ws,rp,rs); %调用ellipord计算椭圆DF阶数N和通带截止
频率wp
[B,A]=ellip(N,rp,rs,wp); %调用ellip计算椭圆带通DF系统函数系数向量B和A
y2t=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=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和通带截止频率wp
[B,A]=ellip(N,rp,rs,wp,'high'); %调用ellip计算椭圆带通DF系统函数系数向量B和A
y3t=filter(B,A,st); %滤波器软件实现
% 高低通滤波器绘图部分
figure(4);subplot(2,1,1);
myplot(B,A); %调用绘图函数myplot绘制损耗函数曲线
yt='y_3(t)';
subplot(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); %调用ellipord计算椭圆DF阶数N和通带截止频率wp
[B,A]=ellip(N,rp,rs,wp); %调用ellip计算椭圆带通DF系统函数系数向量B和A
y1t=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); %调用ellipord计算椭圆DF阶数N和通带截止频率wp
[B,A]=ellip(N,rp,rs,wp); %调用ellip计算椭圆带通DF系统函数系数向量B和A
y1t=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;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和通带截止频率wp
[B,A]=ellip(N,rp,rs,wp); %调用ellip计算椭圆带通DF系统函数系数向量B和A
y2t=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绘制滤波器输出波形
%高通滤波器设计与实现滤出最后一根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和通带截止频率wp
[B,A]=ellip(N,rp,rs,wp,'high'); %调用ellip计算椭圆带通DF系统函数系数向量B和A
y3t=filter(B,A,st); %滤波器软件实现
% 高低通滤波器绘图部分
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)的波形是抑制载波的单频调幅波。以及改变阻带最小衰减后滤波器损耗函数曲线和三路信号波形,修改滤波器参数滤出单独一根频率时滤波器损耗函数曲线及分离出的单边带信号波形。
三路调幅信号st
低通滤波器
带通滤波器
高通滤波器
Rs=100dB
低通滤波器
带通滤波器
高通滤波器
只滤出单独一根频谱得到正弦波
Fo1=225Hz
Fo2=275Hz
Fo3=450Hz
Fo4=550Hz
Fo5=900Hz
Fo6=1100Hz
六、实验心得及体会
1、通过这次实验,我深深体会到滤波器在数字信号处理中的重要地位,滤波器在处理实际问题应用中也是十分有用的。
2、滤波器可用于从噪声中提取信号、信号分离、波形形成、调制解调器等。本次实验的目的是从噪声干扰中提取有用信号,再根据频谱特性,设计滤波器将三路信号分离出来。
3、用双线性变换法设计滤波器时,根据实验要求选取滤波器类型和选取合理正确的滤波器指标参数是实验成功与否的关键所在,参数选取不得当,很可能不能实现滤波的作用,要想滤出漂亮的波形,必须反复实验选取最佳指标参数,已获得最佳滤波效果。
4、每次实验必须明确其实验具体目的和要求,掌握其原理才能真正理解实验意义,以便更好的掌握所学知识,真正学以致用。
5、在实验过程中,根据自己的想法修改程序滤出想要的波,是十分有趣的事。比如改变阻带最小衰减,使其增大,相应滤波器的损耗函数更接近砖墙结构;通过改变滤波器参数就能滤出单独一根频率的波,得到正弦波,椭圆滤波器设计灵活,简单易行,效果明显,学好它,真的是十分有用的啊!
因篇幅问题不能全部显示,请点此查看更多更全内容