通信综合课程设计报告04.docx
《通信综合课程设计报告04.docx》由会员分享,可在线阅读,更多相关《通信综合课程设计报告04.docx(12页珍藏版)》请在冰点文库上搜索。
![通信综合课程设计报告04.docx](https://file1.bingdoc.com/fileroot1/2023-7/12/d0876baa-9d85-4d27-aa05-6af69c59d72a/d0876baa-9d85-4d27-aa05-6af69c59d72a1.gif)
通信综合课程设计报告04
MATLAB环境下FIR滤波器的设计和仿真
一引言
在很多实际的电子系统中,既要求有良好的幅度频率特性,又要求有线性相位特性,所以IIR滤波器在这些系统中难以胜任。
而有限长单位冲激响应(FIR)数字滤波器具有良好的特点,可以在设计任意幅度频率特性滤波器的同时,保证精确、严格的线性相位特性,且FIR数字滤波器的单位冲激响应h(n)是有限长,可以用一个因果系统来实现,因而FIR数字滤波器可以做成因果又是稳定的系统,同时,允许设计多通带(或多阻带)滤波器。
FIR滤波器有多种设计方法:
窗函数法、频率取样法、切比雪夫逼近法。
而其中窗函数法是设计FIR数字滤波器最简单的方法。
采用窗函数法,结合Matlab,按照所要求的滤波器的性能指标,设计一个高通FIR数字滤波器,并且选择多种窗函数来试探,分析它们的各自的频谱,从而设计出性能最佳的FIR滤波器。
根据下列指标,设计一个FIR高通滤波器:
通带截止频率Wp=0.6π,通带允许波动Ap=0.25dB;
阻带截止频率Ws=0.4π,阻带衰减As=50dB。
根据性能指标,选择适当的窗函数,通过各个窗函数来试探,分析各自的频谱特性,设计出了最符合性能指标的高通数字滤波器。
二设计内容
1原理分析
设计FIR数字滤波器最简单的方法是窗函数法。
这种方法一般是先给定所要求的理想滤波器的频率响应Hd(ejω),要求设计一个FIR滤波器频率响应,去逼近理想的频率响应Hd(ejω)。
然而,窗函数法设计FIR数字滤波器是在时域进行的,因此,必须首先由理想频率响应Hd(ejω)的傅里叶反变换推导出对应的单位脉冲响应hd(n)
hd(n)=
(2.1.1)
由于许多理想化的系统均用分段恒定的或分段函数表示的频率响应来定义,因此这种系统具有非因果的和无限长的脉冲响应,即hd(n)一定是无限长的序列,且是非因果的。
因此其系统函数Hd(z)是物理不可实现在,为了是系统变为物理可实现性,也就是我们要设计的是FIR滤波器,且实际的FIR滤波器频率响应尽可能逼近理想滤波器的频率响应,其h(n)必定是有限长的,所以采用窗函数将用有限长的h(n)来逼近无限长的hd(n),最简单且最有效的方法是截断hd(n),
hd(n)0≤n≤N-1
h(n)=(2.1.2)
0其它
通常,我们可以把h(n)表示为所需单位脉冲响应和一个有限长的窗口函数序列w(n)的乘积,即
h(n)=hd(n)w(n)(2.1.3)
窗函数在设计数字滤波器中有很重要的作用,正确选择窗函数可以提高所设计的数字滤波器的性能,或者在满足设计要求的情况下,减小FIR数字滤波器的阶数。
窗函数法,通常也称之为傅里叶级数法,它是在时域进行的。
在实际工程中常用的窗函数有五种,即矩形窗、三角窗、汉宁窗、海明窗和凯泽窗,这些窗函数在MATLAB中分别用boxcar、triang、hanning、hamming、kaiser实现,它们之间的性能比较如表1所示。
五种窗之间的性能比较(表1)
窗函数
旁瓣峰值
主瓣峰值
最小阻带衰减
矩形窗
13dB
4π/M
21dB
三角窗
25dB
8π/M
25dB
汉宁窗
31dB
8π/M
44dB
海明窗
41dB
8π/M
53dB
凯泽窗
57dB
12π/M
74dB
使用窗函数法设计FIR滤波器应满足以下两个条件:
1、窗谱主瓣尽可能地窄,以获得较陡的过渡带;
2、尽量减少窗谱的最大旁瓣的相对幅度,也就是使能量尽量集中在主瓣,减少峰肩和纹波,进行增加阻带的衰减。
2必要的计算
根据工程经验,给定的滤波器指标参数一般为通带截止频率wp、阻带截止频率ws、实际通带波动Rp和最小阻带衰减As。
窗函数设计的经验公式为:
归一化过渡帯
滤波器阶数
当As≥50时,β=0.1102(As-8.7)
当21≤As
50时,β=0.5842(As-21)0.4+0.077886(As-21)
根据设计要求,所要设计的滤波器的过渡段为:
由表1可知,利用海明窗设计的滤波器的过渡带宽Δω=8π/N,所以低通滤波器单位脉冲响应的长度为
通带截止频率为
3设计过程和程序实现
分析:
根据从表1中可以看出,汉宁窗、海明窗和凯泽窗能提供大于40dB的最小阻带衰减,但汉宁窗的旁瓣峰值较小,而主瓣宽度和海明窗一样,可以使滤波器的阶数较少,所以选用汉宁窗和海明窗分别进行设计:
在MatlAB中,理想高通滤波器的单位冲激响应hd(n)计算的程序实现(子函数1):
%--------------------------------------------------------------------------
functionhd=ideal_lp1(Wc,N)
%computetheidealhighpassfiterunitpulserespondencehd(n)
%Wc:
cutofffrequency
%N:
Windowlength
%hd:
unitpulserespondence
Wp=0.6*pi;
Ws=0.4*pi;
tr_width=Wp-Ws;
N=ceil(6.2*pi/tr_width)
n=0:
1:
N-1
Wc=(Ws+Wp)/2;
alpha=(N-1)/2;
n=0:
1:
N-1;
m=n-alpha+eps;
hd=[sin(pi*m)-sin(Wc*m)]./(pi*m);
%-------------------------------------------------------------------------
采用汉宁窗函数设计FIR高通滤波器在Matlab中的程序实现:
主程序部分:
%--------------------------------------------------------------------------
%exa5-9_hannhigh1.m,forexample5-9
%使用汉宁窗设计高通数字滤波器
clearall;
Wp=0.6*pi;
Ws=0.4*pi;
tr_width=Wp-Ws;%过渡带宽度
N=ceil(6.2*pi/tr_width)%滤波器长度
n=0:
1:
N-1;
Wc=(Ws+Wp)/2;%理想高通滤波器的截止频率
hd=ideal_lp1(Wc,N);%理想高通滤波器的单位冲激响应
w_han=(hanning(N))';%汉宁窗
h=hd.*w_han;%截取得到实际的单位脉冲响应
[db,mag,pha,w]=freqz_m2(h,[1]);%计算实际滤波器的幅度响应
delta_w=2*pi/1000;
Ap=-(min(db(Wp/delta_w+1:
1:
501)))%实际通带纹波
As=-round(max(db(1:
1:
Ws/delta_w+1)))%实际阻带纹波
subplot(221)
stem(n,hd)
xlabel('理想单位脉冲响应hd(n)')
subplot(222)
stem(n,w_han)
xlabel('汉宁窗w(n)')
subplot(223)
stem(n,h)
xlabel('实际单位脉冲响应hd(n)')
subplot(224)
plot(w/pi,db)
xlabel('幅度响应(db)')
axis([0,1,-100,10])
%-------------------------------------------------------------------------
function[db,mag,pha,w]=freqz_m2(b,a)
%滤波器幅值响应(绝对、相对)、相位响应
%db:
相对幅值响应;
%mag:
绝对幅值响应;
%pha:
相位响应;
%w:
采取频率;
%b:
系统函数H(z)的分子项(FIR,b=h)
%a:
系统函数H(z)的分母项(对FIR,a=1)
Wp=0.6*pi;
Ws=0.4*pi;
tr_width=Wp-Ws;
N=ceil(6.2*pi/tr_width)
n=0:
1:
N-1;
Wc=(Ws+Wp)/2;
hd=ideal_lp1(Wc,N);
w_han=(hanning(N))';
h=hd.*w_han;
b=h;
a=[1];
[H,w]=freqz(b,a,1000,'whole');
H=(H(1:
1:
501))';
w=(w(1:
1:
501))';
mag=abs(H);
db=20*log10((mag+eps)/max(mag));
pha=angle(H);
%-------------------------------------------------------------------------
运行结果:
N=31Ap=0.0887As=44
由结果可知,所设计的高通滤波器为I型滤波器,它的通带纹波和阻带纹波均满足设计要求。
汉宁窗函数设计的高通滤波器响应曲线:
汉宁窗函数高通滤波器响应曲线
采用海明窗函数设计FIR高通滤波器在Matlab中的程序实现:
主程序部分:
%---------------------------------------------------------------------
%exa5-9_hannhigh1.m,forexample5-9
%使用海明窗设计高通数字滤波器
clearall;
Wp=0.6*pi;
Ws=0.4*pi;
tr_width=Wp-Ws;%过渡带宽度
N=ceil(6.2*pi/tr_width)%滤波器长度
n=0:
1:
N-1;
Wc=(Ws+Wp)/2;%理想高通滤波器的截止频率
hd=ideal_lp1(Wc,N);%理想高通滤波器的单位冲激响应
w_ham=(hamming(N))';%海明窗
h=hd.*w_ham;%截取得到实际的单位脉冲响应
[db,mag,pha,w]=freqz_m2(h,[1]);%计算实际滤波器的幅度响应波
delta_w=2*pi/1000;
Ap=-(min(db(Wp/delta_w+1:
1:
501)))%实际通带纹波
As=-round(max(db(1:
1:
Ws/delta_w+1)))%实际阻带纹波
subplot(221)
stem(n,hd)
xlabel('理想单位脉冲响应hd(n)')
subplot(222)
stem(n,w_ham)
xlabel('海明窗w(n)')
subplot(223)
stem(n,h)
xlabel('实际单位脉冲响应hd(n)')
subplot(224)
plot(w/pi,db)
xlabel('幅度响应(db)')
axis([0,1,-100,10])
%--------------------------------------------------------------------------
function[db,mag,pha,w]=freqz_m2(b,a)
%滤波器幅值响应(绝对、相对)、相位响应
%db:
相对幅值响应;
%mag:
绝对幅值响应;
%pha:
相位响应;
%w:
采取频率;
%b:
系统函数H(z)的分子项(FIR,b=h)
%a:
系统函数H(z)的分母项(对FIR,a=1)
Wp=0.6*pi;
Ws=0.4*pi;
tr_width=Wp-Ws;
N=ceil(6.2*pi/tr_width)
n=0:
1:
N-1;
Wc=(Ws+Wp)/2;
hd=ideal_lp1(Wc,N);
w_ham=(hamming(N))';
h=hd.*w_ham;
b=h;
a=[1];
[H,w]=freqz(b,a,1000,'whole');
H=(H(1:
1:
501))';
w=(w(1:
1:
501))';
mag=abs(H);
db=20*log10((mag+eps)/max(mag));
pha=angle(H);
%-------------------------------------------------------------------------
运行结果:
N=31Ap=0.1189As=39
由结果可知,所设计的高通滤波器为I型滤波器,它的通带纹波和阻带纹波均满足设计要求。
海明窗高通滤波器响应曲线
通过汉宁窗函数和海明窗函数设计结果比较:
汉宁窗、海明窗都能提供大于40dB的最小阻带衰减,但汉宁窗的旁瓣峰值较小,而主瓣宽度和海明窗一样,可以使滤波器的阶数较少,所以选用汉宁窗进行设计。
三结论
1、设计总结:
数字滤波器是由数字乘法器、加法器和延时单元组成的一种装置。
其功能是对输入离散信号的数字代码进行运算处理,以达到改变信号频谱的目的。
本文针对在实际设计中要大量使用数字滤波器这一现实,对有限冲击响应数字滤波器(FIR)的基本理论、性能特点、设计方法进行了全面的分析,特别是对常用窗函数设计方法的两种窗进行参数的对比,选取了汉宁窗函数进行设计。
和其它高级语言相比,Matlab环境下可以更方便、快捷地设计出具有严格线性相位的FIR滤波器,节省大量的编程时间,提高编程效率,且参数的修改也十分方便,还可以进一步进行优化设计。
通过Matlab仿真实验,结果表明改进窗函数不仅具有一般窗函数设计简单、易于实现的优点,而且还可通过参数的选择,在阻帯衰减和过渡帯间做最佳选择,使旁瓣幅度和主瓣的宽度之间达到更好的匹配,能实现较好的滤波效果,达到数字滤波的目的。
上述这些充分体现了该函数的优越性,具有实用性。
2、心得和收获:
为期四周的通信综合课程设计结束了,此次课程设计是通信工程专业学生重要实践课。
一方面,经过查资料、选方案、总体设计、方案实现、分析实验结果、撰写设计报告,得到了一次较全面的工程实践训练。
另一方面,通过课程设计,注重培养了理论联系实际,培养和提高了创新能力;同时,在归定时间完成指定的设计和实验任务,实现了理论知识到工程实践的过渡,为以后的毕业设计和将来出去工作打下了基础。
参考文献
1、董长虹等.MATLAB信号处理和使用.北京:
国防工业出版社,2005
2、[美]M.H.海因斯著,张建华等译.数字信号处理.北京:
科学出版社,2002
3、张葛祥,李娜.MATLAB仿真技术和使用.北京:
清华大学出版社,2003
4、楼顺天,李博菡.基于MATLAB的系统分析和设计.西安:
西安电子科技大学出版社,1998
5、吴湘淇,肖熙,郝晓莉.信号系统和信号处理的软硬件实现[M].北京:
电子工业出版社,2003
6、张葛祥,李娜.MATLAB仿真技术和使用[M].北京:
清华大学出版社,2003
7、陈桂明.使用MATLAB语言处理数字信号和数字图像[M].北京:
科学出版社,2001
8、陈怀琛.数字信号处理教程-MATLAB释义和实现[M].北京:
电子工业出版社,2004