学号1207040208天津城建大学数字信号处理设计说明书利用FFT对信号进行频谱分析起止日期:2015年1月5日至2015年1月16日学生姓名刘浩男班级12电信2班成绩指导教师(签字)计算机与信息工程学院2015年1月16日天津城建大学课程设计任务书2014—2015学年第1学期计算机与信息工程学院电子信息工程专业12电信2班班级课程设计名称:数字信号处理设计题目:利用FFT对信号进行频谱分析完成期限:自2015年1月5日至2015年1月16日共2周设计依据、要求及主要内容:一.课程设计依据在掌握数字信号处理相关理论的基础上,根据数字信号处理课程所学知识,利用Matlab对正弦信号和输入的语音信号进行频谱分析。二.课程设计内容1.模拟信号()2sin(4)5cos(8)xttt,以0.01(0:1)tnnN进行采样,求N=128点FFT的幅度频谱;要求:求出信号的2个模拟频率和数字频率各为多少?这两个频率数值与利用Matlab进行FFT频谱分析结果是否一致?2.在Matlab程序中读入一段语音信号,对语音信号进行频谱分析。三.课程设计要求1.要求独立完成设计任务。2.课程设计说明书封面格式要求见《天津城建大学课程设计教学工作规范》附表13.课程设计的说明书要求简洁、通顺,计算正确,图纸表达内容完整、清楚、规范。4.运行程序,观察并保存程序运行结果,能够对运行结果进行结果分析。5.课设说明书要求:1)说明题目的设计原理和思路、采用方法及程序。2)详细说明调试方法和调试过程,并给程序加注释。3)给出程序运行结果,并对其进行说明和分析。指导教师(签字):系主任(签字):批准日期:2014年12月31日目录第一章设计任务及要求........................................................11.1课程设计依据..........................................................11.2课程设计内容..........................................................11.3课程设计要求..........................................................1第二章设计原理..............................................................22.1FFT基本原理..........................................................22.2FFT基本应用..........................................................22.3MATLAB基本函数调用...................................................3第三章设计实现..............................................................43.1模拟信号的频谱分析....................................................43.1.1任务要求........................................................43.1.2程序代码........................................................43.1.3运行结果........................................................53.2语音信号的频谱分析....................................................63.2.1程序代码........................................................63.2.2运行结果........................................................6第四章设计结果及分析........................................................74.1模拟信号频谱结果的分析................................................74.2语音信号频谱结果的分析...............................................10第五章总结.................................................................11参考文献.....................................................................12附录主要程序...............................................................131第一章设计任务及要求1.1课程设计依据在掌握数字信号处理相关理论的基础上,根据数字信号处理课程所学知识,利用Matlab对正弦信号和输入的语音信号进行频谱分析。1.2课程设计内容1.模拟信号()2sin(4)5cos(8)xttt,以0.01(0:1)tnnN进行采样,求N=128点FFT的幅度频谱;要求:求出信号的2个模拟频率和数字频率各为多少?这两个频率数值与利用Matlab进行FFT频谱分析结果是否一致?2.在Matlab程序中读入一段语音信号,对语音信号进行频谱分析。1.3课程设计要求1.要求独立完成设计任务。2.课程设计说明书封面格式要求见《天津城建大学课程设计教学工作规范》附表13.课程设计的说明书要求简洁、通顺,计算正确,图纸表达内容完整、清楚、规范。4.运行程序,观察并保存程序运行结果,能够对运行结果进行结果分析。5.课设说明书要求:1)说明题目的设计原理和思路、采用方法及程序。2)详细说明调试方法和调试过程,并给程序加注释。3)给出程序运行结果,并对其进行说明和分析。2第二章设计原理2.1FFT基本原理离散傅里叶变换(DiscreteFourierTransform,缩写为DFT),是傅里叶变换在时域和频域上都呈离散的形式,将信号的时域采样变换为其DTFT的频域采样。在形式上,变换两端(时域和频域上)的序列是有限长的,而实际上这两组序列都应当被认为是离散周期信号的主值序列。即使对有限长的离散信号作DFT,也应当将其看作其周期延拓的变换。在实际应用中通常采用快速傅里叶变换(即FFT)计算DFT。FFT,即为快速傅里叶变换,是离散傅里叶变换的快速算法,它是根据离散傅里叶变换的奇、偶、虚、实等特性,对离散傅里叶变换的算法进行改进获得的。它对傅里叶变换的理论并没有新的发现,但是对于在计算机系统或者说数字系统中应用离散傅里叶变换,可以说是进了一大步。设x(n)为N项的复数序列,由DFT变换,任一X(m)的计算都需要N次复数乘法和N-1次复数加法,而一次复数乘法等于四次实数乘法和两次实数加法,一次复数加法等于两次实数加法,即使把一次复数乘法和一次复数加法定义成一次“运算”(四次实数乘法和四次实数加法),那么求出N项复数序列的X(m),即N点DFT变换大约就需要N2次运算。当N=1024点甚至更多的时候,需要N2=1048576次运算,在FFT中,利用WN的周期性和对称性,把一个N项序列(设N=2k,k为正整数),分为两个N/2项的子序列,每个N/2点DFT变换需要(N/2)2次运算,再用N次运算把两个N/2点的DFT变换组合成一个N点的DFT变换。这样变换以后,总的运算次数就变成N2(N/2)2=NN2/2。继续上面的例子,N=1024时,总的运算次数就变成了525312次,节省了大约50%的运算量。而如果我们将这种“一分为二”的思想不断进行下去,直到分成两两一组的DFT运算单元,那么N点的DFT变换就只需要Nlog2N次的运算,N在1024点时,运算量仅有10240次,是先前的直接算法的1%,点数越多,运算量的节约就越大,这就是FFT的优越性。当然,也因为这一思想,只有当项数N=2M(M为正整数)时,才能进行FFT的运算。2.2FFT基本应用周期信号的频谱是离散谱,只有用整数倍周期的长度作FFT,得到的离散谱才能代表周期信号的频谱。如果不知道信号周期,可以尽量选择信号的观察时间长一些。在各种信号序列中,有限长序列占重要地位。对有限长序列可以利用离散傅立叶变换(DFT)进行分析。DFT不但可以很好的反映序列的频谱特性,而且易于用快速算法(FFT)在计算机上进行分析。有限长序列的DFT是其z变换在单位圆上的等距离采样,或者说是序列傅立叶的等距离采样,因此可以用于序列的谱分析。FFT是DFT的一种快速算法,它是对变换式进行一次次分解,使其成为若干小数据点的组合,从而减少运算量。在MATLAB信号处理工具箱中的函数fft(x,n),可以用来实现序列的N点快速傅立叶变换。频谱分辨率直接和FFT的变换区间N有关,因为FFT能够实现的频率分辨率是2π/N≤D。可以根据此式选择FFT的变换区间N。误差主要来自于用FFT作频谱分析是,得到的是离散谱,儿信号(周期信号除外)是连续谱,只有当N较大时,离散谱的包络才能逼近于连续谱,因此N要适当选择大一些。32.3MATLAB基本函数调用cos();%余弦函数sin();%正弦函数fft();%FFT变换函数wavread();%读WAV音频文件函数length();%求长度函数figure();%新建图形函数subplot();%图形分块函数plot();%绘制折线图函数stem();%绘制杆图函数title();%写标题函数xlabel();%写x轴标题函数ylabel();%写y轴标题函数grid;%添加网格4第三章设计实现3.1模拟信号的频谱分析3.1.1任务要求模拟信号()2sin(4)5cos(8)xttt,以0.01(0:1)tnnN进行采样,求N=128点FFT的幅度频谱;要求:求出信号的2个模拟频率和数字频率各为多少?这两个频率数值与利用Matlab进行FFT频谱分析结果是否一致?3.1.2程序代码closeall;clc;clearall;%清零,清屏,关闭其他窗口,f1=2;A1=2;%指定各余弦信号的频率和幅值f2=4;A2=5;fs=128;%指定采样频率n=0:127;%指定采样时刻x1=A1*sin(2*pi*f1/fs*n);%产生各余弦信号序列x2=A2*cos(2*pi*f2/fs*n);y1=x1+x2;%通过叠加形成复合信号y1%绘制各余弦信号,噪声信号及其复合信号subplot(3,1,1);plot(n,x1);title('余弦信号1');grid;subplot(3,1,2);plot(n,x2);title('余弦信号2');grid;subplot(3,1,3);plot(n,y1);title('复合信号');grid;%用快速傅立叶变换对复合信号进行频谱分析Fy1=fft(y1);figure;%换一页显示subplot(1,1,1);stem(n,abs(Fy1),'.');title('复合信号的FFT频谱分析');xlabel('2πk/N');ylabel('|X(k)|');grid;53.1.3运行结果020406080100120140-202余弦信号1020406080100120140-505余弦信号2020406080100120140-10010复合信号020406080100120140050100150200250300350复合信号的FF