数字信号处理课设报告.docx
《数字信号处理课设报告.docx》由会员分享,可在线阅读,更多相关《数字信号处理课设报告.docx(15页珍藏版)》请在冰豆网上搜索。
数字信号处理课设报告
序号:
60
数字信号课程设计报告
课程名称:
数字信号课程设计
系别:
电子信息工程系
专业班级:
140406
学号:
20141329
姓名:
李延琦
课程题目:
FIR数字滤波器设计(II)
完成日期:
2016年12月23日
指导老师:
周明月
2016年12月19日
目录
1实验基础知识:
3
1.1数字滤波技术3
1.2FIR滤波器3
2课程设计方法4
2.1MATLAB结合窗函数法的设计方法4
2.2窗函数设计法5
2.2.1设计函数的选取5
2.2.2窗函数的构造6
2.2.3窗函数的设计条件6
3基本窗函数7
3.1三类基本窗函数介绍7
3.1.1矩形窗7
3.1.2汉宁窗(升余弦窗)8
3.1.3布莱克曼窗9
4实验原理9
5实验内容与步骤10
6实验程序及结果11
6.1矩形窗11
6.2汉宁窗12
6.3布莱克曼窗14
7实验心得15
8参考文献16
1实验基础知识:
1.1数字滤波技术
数字滤波,就是通过一定的计算或判断程序减少干扰信号在有用信号中的比例,所以实质上是一种程序滤波。
与此对应的就是模拟滤波,模拟滤波主要无源滤波(由电阻、电容、电感等不外接电源的元件组成)与有源滤波(由运算放大器等需要外接电源的元件组成),其目的是将信号中的噪音和干扰信号滤去或者将希望得到的频率信号滤出为我所用。
数字滤波的出现克服了模拟滤波的很多不足,具有以下优点:
1.用程序实现的,不需要增加硬设备,所以可靠性高,稳定性好。
2.可以对频率很低的信号实现滤波,克服了模拟滤波的缺陷。
3.可以根据不同信号采用不同的滤波方法或参数,具有灵活、方便、功能强的特点。
1.2FIR滤波器
FIR滤波器是数字信号处理系统中最基本的元件,它可以在保证任意幅频特性的同时具有严格的线性相频特性,同时其单位冲激响应是有限的,没有输入到输出的反馈,是稳定的系统。
FIR滤波器具有以下主要优点:
1.FIR滤波器具有严格的线性相位;
2.FIR滤波器永远稳定;
3.FIR滤波器设计方法一般是线性的;
4.FIR滤波器在硬件上具有更高的运行效率;
5.FIR滤波器启动传输时间只需要有限时间。
FIR滤波器的主要缺点有:
1.FIR滤波器为达到同样的性能要求需要比IIR滤波器高得多的阶数;
2.相应的FIR滤波器的时延比同等性能的IIR滤波器高很多。
FIR滤波器的硬件实现主要有数字集成芯片,DSP芯片FIR滤波器,可编程FIR滤波器,后两者的实际方法主要通过MATLAB软件进行设计,其设计方法多样,形式灵活,能够满足各种要求,并且不受数字集成芯片规格的限制。
2课程设计方法
2.1MATLAB结合窗函数法的设计方法
MATLAB作为一款优秀的数值计算软件,本身就内置了丰富的函数,其中便有用于通信仿真的一系列函数,并且MATLAB中还集成了通信设计的工具箱,不管是内置的函数,还是通信工具箱,均有专用于滤波器设计的工具,常用的主要有用函数法设计和用通信工具箱设计。
2.2窗函数设计法
2.2.1设计函数的选取
MATLAB信号处理工具箱提供了基于加窗的线性相位FIR滤波器设计函数fir1和fir2,fir1函数的调用格式为:
b=fir1(n,Wn)
b=fir1(n,Wn,'ftype')
b=fir1(n,Wn,window)
b=fir1(n,Wn,'ftype',window)
b=fir1(…..,'normalization')
函数参数说明如下:
1.n表示滤波器的阶数
2.'ftype'表示所设计滤波器的类型:
3.'high'表示高通滤波器
4.'stop'表示带阻滤波器
5.'DC-1'表示多通带滤波器,第一频带为通带
6.'DC-0'表示多通带滤波器,第一频带为阻带;默认时为低通或带通滤波器;
该函数实现加窗的线性相位FIR滤波器设计,可以设计标准低通、带通、高通和带阻滤波器
2.2.2窗函数的构造
MATLAB工具箱已经提供了各种窗函数的构造函数,因而窗函数的构造十分方便,下面给出几种常用窗函数的构造方法:
1.矩形窗:
利用w=boxcar(n)的形式得到窗函数,其中n为窗函数的长度,而返回值w为一个n阶的向量,它的元素由窗函数的值组成。
‘w=boxcar(n)’等价于‘w=ones(1,n)’.
2.汉宁窗:
利用w=hanning(n)得到窗函数,其中n为窗函数的长度,而返回值w为一个n阶的向量,包含了窗函数的n个系数。
3.布莱克曼窗:
利用w=blackman(n)得到窗函数,其中n为窗函数的长度,而返回值w为一个n阶的向量,包含了窗函数的n个系数。
它的主瓣宽度是矩形窗主瓣宽度的3倍,为12π/N,但是它的最大旁瓣值比主瓣值低57dB。
2.2.3窗函数的设计条件
在使用窗函数设计滤波器时要满足以下两个条件:
(1)主瓣尽可能窄,以使设计出来的滤波器有较陡的过渡带。
(2)尽量减少最大旁瓣的相对幅度,也就是能量集中于主瓣,以减小带内、带外波动的最大幅度,增大阻带衰减。
一般来说,以上两点很难同时满足。
当选取主瓣宽度很窄时,旁瓣的分量势必增加,从而带内、带外的波动也增加了;当选取最小的旁瓣幅度时,降低了带内、带外的波动,但是过渡带的陡度减小了。
所以实际采用的窗函数其特性往往是它们的折中,在保证主瓣宽度达到一定要求的前提下,适当牺牲主瓣宽度来换取旁瓣波动的减小。
本实验中用到的窗函数有三种,即矩形窗、汉宁窗、海明窗。
这些窗函数之间的性能比较如下表所示。
3种窗函数的性能比较
窗类型
旁瓣峰值
主瓣峰值
最小阻带衰减
矩形窗
13dB
4π/M
21dB
汉宁窗
31dB
8π/M
44dB
海明窗
41dB
8π/M
53dB
3基本窗函数
3.1三类基本窗函数介绍
3.1.1矩形窗
矩形窗(RectangularWindow)函数的时域形式可以表示为:
(1)
它的频域特性为
(2)
3.1.2汉宁窗(升余弦窗)
汉宁窗(hanning)函数时域形式可表示为:
(3)
利用傅利叶变换的调制特性,由上式可得汉宁窗的频谱函数为:
(4)
式中,
(5)
当N远大于1时,上式可近似表示为:
(6)
这三部分之和使旁瓣互相抵消,能量更集中在主瓣,汉宁窗函数的最大旁瓣值比主瓣值低31dB,但是主瓣宽度比矩形窗函数的主瓣宽度增加了1倍,为8π/N。
hanning函数:
生成汉宁窗
调用方式:
(1)w=hanning(n):
输入参数n是窗函数的长度;输出参数w是由窗函数的值组成的n阶向量。
注意:
此函数不返回是零点的窗函数的首尾两个元素。
(2)w=hanning(n,'symmetric'):
与上面相类似。
(3)w=hanning(n,'periodic'):
此函数返回包括为零点的窗函数的首尾两个元素。
3.1.3布莱克曼窗
布莱克曼窗函数为:
(7)
其频谱的幅度函数为
(8)
该窗函数由于项数的增加,旁瓣之间抵消作用增强,主瓣宽度为
。
4实验原理
如果所希望的滤波器的理想频率响应函数为,则其对应的单位脉冲响应为
(9)
窗函数截断,并进行加权处理,得到:
h(n)就作为实际设计的FIR数字滤波器的单位脉冲响应序列,其频率响应函数为:
(10)
如果要求线性相位特性,还必须满足:
根据上式中的正、负号和长度N的奇偶性又将线性相位FIR滤波器分成四类。
要根据所设计的滤波特性正确选择其中一类。
例如,要设计线性相位低通特性,可选择
一类,而不能选
一类。
常用的窗函数有矩形窗、巴特列特窗(三角形窗)、汉宁窗(升余弦窗)、海明窗(改进的升余弦窗)、布拉克曼窗(二阶升余弦窗)及凯泽窗。
5实验内容与步骤
1)复习用窗函数法设计FIR数字滤波器一节内容,阅读本实验原理,了解各窗函数,掌握设计步骤。
2)编写程序。
①编写能产生四种窗函数的子程序。
②编写主程序。
主程序框图如右图所示。
其中幅度特性要求用dB表示。
(11)
(12)
(13)
画图时,用
打印幅度特性。
第k点对应的频率为
。
为使曲线包络更接近
的幅度特性曲线,DFT变换区间要选大些。
6实验程序及结果
6.1矩形窗
仿真程序:
wc=pi/4;
N=11;
a=(N-1)/2;
n=0:
N-1;
hd=sin(wc*(n-a))/(n-a)*pi;
w1=boxcar(N);
h1=hd*w1;
w2=hanning(N);
h2=hd*w2;
w3=hamming(N);
h3=hd*w3;
w4=blackman(N);
h4=hd*w4;
H1=20*log10(abs(fft(h1,1024)));
H2=20*log10(abs(fft(h2,1024)));
H3=20*log10(abs(fft(h3,1024)));
H4=20*log10(abs(fft(h4,1024)));
w=(0:
1023)/1024;
subplot(2,1,1);
plot(w,H1);
title('矩形窗幅频曲线');
subplot(2,1,2);
plot(w,angle(fft(h1,1024)));
title('矩形窗相频曲线');
实验结果:
6.2汉宁窗
程序:
wc=pi/4;
N=11;
a=(N-1)/2;
n=0:
N-1;
hd=sin(wc*(n-a))/(n-a)*pi;
w1=boxcar(N);
h1=hd*w1;
w2=hanning(N);
h2=hd*w2;
w3=hamming(N);
h3=hd*w3;
w4=blackman(N);
h4=hd*w4;
H1=20*log10(abs(fft(h1,1024)));
H2=20*log10(abs(fft(h2,1024)));
H3=20*log10(abs(fft(h3,1024)));
H4=20*log10(abs(fft(h4,1024)));
w=(0:
1023)/1024;
subplot(2,1,1);
plot(w,H2);
title('Hanning窗幅频曲线');
subplot(2,1,2);
plot(w,angle(fft(h2,1024)));
title('Hanning窗相频曲线');
结果:
6.3布莱克曼窗
程序:
wc=pi/4;
N=11;
a=(N-1)/2;
n=0:
N-1;
hd=sin(wc*(n-a))/(n-a)*pi;
w1=boxcar(N);
h1=hd*w1;
w2=hanning(N);
h2=hd*w2;
w3=hamming(N);
h3=hd*w3;
w4=blackman(N);
h4=hd*w4;
H1=20*log10(abs(fft(h1,1024)));
H2=20*log10(abs(fft(h2,1024)));
H3=20*log10(abs(fft(h3,1024)));
H4=20*log10(abs(fft(h4,1024)));
w=(0:
1023)/1024;
subplot(2,1,1);
plot(w,H4);
title('Blackman窗幅频曲线');
subplot(2,1,2);
plot(w,angle(fft(h4,1024)));
title('Blackman窗相频曲线')
结果:
7实验心得
本学期学习了《数字信号处理》课程,该课程是我们专业课程。
通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
在设计的过程中遇到过各种各样的问题,同时发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。
在整个课程设计过程中,我们不断地在遇到问题和解决问题之中盘旋。
例如在学习matlab的相关编程的时候,虽然说是与C语言类似,但是终究还是不同,我们只能在摸索中前进。
经过资料的查询和不断地实验,终于将问题圆满解决。
与此同时,我也深深的体会到了自己的不足之处,在以后的日子里需要不断的改进,使自己不断地前进,向着我们理想的彼岸前进。
而且,在我们学习理论知识的过程中,我们应该不断的与实际联系,将我们学到的理论知识运用到实际问题当中,这样我们才可以牢固的掌握我们学到的知识。
希望在以后的日子里有更多的实践机会,加强我们的动手能力与理论联系实际的思想。
8参考文献
1.陈怀琛《MATLAB及在电子信息课程中的应用》电子工业出版社2006
2.刘泉《数字信号处理原理与实现》电子工业出版社2005
3.刘泉《信号与系统》高等教育出版社2006
4.徐以涛《数字信号处理》西安电子科技大学出版社2009
5.周开利,邓春辉《MATLAB基础及其应用教程》北京大学出版社2007
6.赵静,张瑾《基于MATLAB的通信系统仿真》北京航空航天大学出版社2006
7.宋寿鹏《数字滤波器设计及工程应用》江苏大学出版社2007
8.丛玉良《数字信号处理原理及其MATLAB实现(第3版)》电子工业出版社