用fft对信号进行频谱分析报告

发布时间:2020-03-21   来源:文档文库   
字号:
——————————————————————————


线————————————————————————————————

实验总成绩:



西安邮电大学
通信与信息工程学院 科研训练报告


专业班级: 学生姓名: 学号(班内序号: 2014 9 16

1

FFT对信号进行频谱分析

快速傅氏变换(FFT),是离散傅氏变换的快速算法,它是根据离散傅氏变换的奇、偶、虚、实等特性,对离散傅立叶变换的算法进行改进获得的。它对傅氏变换的理论并没有新的发现,但是对于在计算机系统或者说数字系统中应用离散傅立叶变换,可以说是进了一大步。 傅里叶变换的理论与方法在“数理方程”、“线性系统分析”、“信号处理、仿真”等很多学科领域都有着广泛应,由于计算机只能处理有限长度的离散的序列,所以真正在计算机上运算的是一种离散傅里叶变换. 虽然傅里叶运算在各方面计算中有着重要的作用,但是它的计算过于复杂,大量的计算对于系统的运算负担过于庞大,使得一些对于耗电量少,运算速度慢的系统对其敬而远之,然而,快速傅里叶变换的产生,使得傅里叶变换大为简化,在不牺牲耗电量的条件下提高了系统的运算速度,增强了系统的综合能力,提高了运算速度,因此快速傅里叶变换在生产和生活中都有着非常重要的作用,对于学习掌握都有着非常大的意义。

关键词 快速傅氏变换;信号频谱分析;离散傅里叶变换

Abstract Fast Fourier Transform (FFT, is a discrete fast Fourier transform algorithm, which is based on the Discrete Fourier Transform of odd and even, false, false, and other characteristics of the Discrete Fourier Transform algorithms improvements obtained. Its Fourier transform theory has not found a new, but in the computer system or the application of digital systems Discrete Fourier Transform can be said to be a big step into. Fourier transform theory and methods in the "mathematical equation" and "linear systems analysis" and "signal processing, simulation," and many other areas have a wide range of applications, as the computer can only handle a limited length of the sequence of discrete, so true On the computer's operation is a discrete Fourier transform. Fourier Although all aspects of computing in the calculation has an important role, but its calculation was too complicated, a lot of computing system for calculating the burden is too large for some Less power consumption, the slow speed of operation of its system at arm's length, however, have the fast Fourier transform, Fourier transform greatly simplifying the making, not in power at the expense of the conditions to increase the speed of computing systems, and enhance the system The comprehensive ability to improve the speed of operation, the Fast Fourier Transform in the production and life have a very important role in learning to master all have great significance.
Key words Fast Fourier Transform; Signal spectrum analysis Discrete Fourier Transform
2




引言: 1965年,库利(J.W.Cooley)和图基(J.W.Tukey)在《计算数学》杂志上发表了“机器计算傅立叶级数的一种算法”的文章,这是一篇关于计算DFT的一种快速有效的计算方法的文章。它的思路建立在对DFT运算内在规律的认识之上。这篇文章的发表使DFT的计算量大大减少,并导致了许多计算方法的发现。这些算法统称为快速傅立叶变换(Fast Fourier Transform),简称FFT1984年,法国的杜哈梅尔(P.Dohamel)和霍尔曼(H.Hollmann)提出的分裂基快速算法[2][6] 使运算效率进一步提高。FFT即为快速傅氏变换,是离散傅氏变换的快速算法,它是根据离散傅氏变换的奇、偶、虚、实等特性,对离散傅立叶变换的算法进行改进获得的。它对傅氏变换的理论并没有新的发现,但是对于在计算机系统或者说数字系统中应用离散傅立叶变换,可以说是进了一大步。随着科学的进步,FFT算法的重要意义已经远远超过傅里叶分析本身的应用。FFT算法之所以快速,其根本原因在于原始变化矩阵的多余行,此特性也适用于傅里叶变换外的其他一些正交变换,例如,快速沃尔什变换、数论变换等等。在FFT的影响下,人们对于广义的快速正交变换进行了深入研究,使各种快速变换在数字信号处理中占据了重要地位。因此FFT对数字信号处理技术的发展起了重大推动作用。


3



一、问题重述
X(t=sin(2πf1t+sin(2πf2t+sin(2πf3t 其中f1=2Hzf2=2.02Hzf3=2.07Hz试确定参数fxN和相应模拟信号xt的长度T
其中f1=2Hz,f2=2.02Hz,f3=2.07Hz,试确定参数fs,N和相应模拟信号的长度T最终用MATLAB程序应用FFT实现信号频谱特性的分析,并绘制其频谱图。 DFT进行频率参数分析时,DFT参数的选择如下:
1)若已知信号的最高频率fc,为防止频率混叠,选定抽样频率fs满足fsfc再根据实际需求,选择频率分辨率
2)一旦选定就可以确定计算DFT所需要点数N N=fs/, 当频率分辨率越小时,DFT能实现的信号频率分辨率越高,这当然是我们期望的,但愈小,计算DFT所需的点数N就愈大,计算复杂度就要高,
3)抽样频率fsDFT所需点数N确定后,就可以确定所需相应模拟信号的长T T=N/fS=N Ts Ts为信号的采样间隔。
二、课程设计目的
1.熟悉MATLAB的使用方法,其中包括了解简单函数、了解原理和掌握操作方法;
2.熟悉课程设计的过程及正是论文的写法。 3.通过实验加深对FFT的理解;
4.熟悉应用FFT对典型信号进行频谱分析的方法。 5.增强在通信原理仿真方面的动手能力与自学能力;
6.完成之后,再遇到类似的问题时,学会对所面对的问题进行系统的分析,并能从多个方面进行比较。
三、实验原理

数字信号的傅里叶变换,通常采用离散傅里叶变换(DFT方法。DFT 存在的不足是计算量太大,很难进行实时处理。计算一个N 点的DFT ,一般需要N2次复数乘法和N(N-1次复数加法运算.因此,N较大或要求对信号进行实时处理时,往往难以实现所需的运算速度。1965,J.W.CoolyJ.W.Tukey发现DFT的一种快速算法,经其他学者进一步改进, 很快形成了一套高效运算方,这就是现在通用的快速傅里叶变换, 简称FFT( The Fast Fourier nkWNTransform。快速傅里叶变换的实质是利用式(1中的权函数的对称性和


周期性,NDFT进行一系列分解和组合,使整个DFT的计算过程变成一系列叠代运算过程,使DFT的运算量大大简化,DFT及数字信号的实时处理和应用创造了良好的条件。
快速傅里叶变换算法如下:

(1式可知,对每一个n计算X(须作N次复数乘法及N-1次复数加法,要完成这组变换共需次乘法及N(N-1次复数加法。但以下介绍的快速傅里叶变换的算法,可大大减少运算次数,提高工作效率。 N2r时,nk可用二进制数表示:
n2r1nr12r2nr2Ln0nr1nr2Ln0 k2r1kr12r2kr2Lk0kr1kr2Lk0

又记 WeN,则(1)式可改写为
100 X(nr1nr2Ln0kk0L111kr10x0(kr1kr2Lk0Wp 2
式中:Pnk(2r1kr12r2kr2Lk0(2r1nr12r2nr2Ln0 WPW(2r1nr12r2nr2Ln02r1kr1W(2r1nr12r2nr2Ln02r2kr2
WK0(2因为W2rr1nr12r2nr2Ln0 (3 W2r[eN]N1所以(2)可改成
100X(nr1nr2Ln0k11Lk011kr10x0(kr1kr2Lk0W(2r1nr12r2nr2Ln02r1kr1W(2r1nr12r2nr2Ln02r2kr2WK0(2r1nr12r2nr2Ln0 4
x2(n0n1kr3Lk0kr20x0(n0kr2Lk0W(2n1n02r2kr2 (5 X(nr1nr2Ln0xr(n0n1Lnr1
则式(5)即为式(4)的分解形式。将初始数据代入式(5)的第一个等式,可得每一组计算数据,一般将痗L-1组计算数据代入式(5)的第L个等式,计算后可得第L组计算数据(L12,…,γ),计算公式也可表示为
x1(n0kr2Lk0k1r10x0(kr1kr2Lk0W(2r1nr12r2nr2Ln0k0= xl1(n0n1Lnr20kr1kr2Lk0xl1(n0n1Lnr20kr1kr2Lk0WP 6
式中P2r1nl12r2nl2L2r1n0 7


- 1 -

6Lxl(kxl(nr1nr2Ln0kr1kr2Lk0 的计算只依赖于上一个数组的两个数据这两个数据的标号相差2Y1N/2ljin/2l,而且这两个数据只用于计算第L个数组中标号的数据(等号右端为二进制数)nl1分别取0和1时,分别有ki,kjin/2l因此,用上一组的两个数据计算所得的两个新数据仍可储存在原来位置,计算过程中只需要N个存储器。xl(ixl(in/2l称为第L个数组中的对偶结点对。计算每个对偶结点对只需一次乘法,事实上由式(6)可得
xl(ixl1(i[iNp1]W 2lxl(iNNp2x(ix[i]W l1l1ll22r2Pnl2...2rln012式中:nl1
P22rl2r2nl2...2rln0别为式(7)中R1pPP2P211N/2取0,1时对应的P值。于是对偶结点的W如下关系:
WP2WP1N
2[eN]P1N2WP1,因此式(6)可表示为
Np]W2l
NNpxl(ilxl1(ixl1[il]W22xl(ixl1(ixl1[iP的求法:在0...0n0n1...nl1xl(i中,i写成二进制数n0n1...nl1krl1...k0右移rl位,就成为
颠倒位序得pnl1...n1n00...0(l1,2,...,r5吕,前面的γ等式,每个等式均对应一组数据进行计算,每组数据都有N/2对结点,根据式(9),每对结点只需作1次乘法和2次加法,因此,每组数据只需N/2乘法和N次加法,因而完成γ组数据的计算共需Nγ/2次乘法和Nγ次加法。
四、问题分析
本题主要要求应用FFT对典型信号进行频谱分析,最后使用MATLAB程序实现信号频域特性的分析。编写程序时,首先得先计算和确定一些参数的取值,根据已知题,确定最高频率fc=f3,根据实际需求,选择f3=5fc,然后确定采样点数N,对信号进行谱分析的重要问题是频谱分辨率和分析误差。频谱分辨率直接和FFT的变换区间N有关,因为FFT能够实现的频率分辨率是2
- 2 -

π/N,因此要求2π/N小于等于。可以根据此式选择FFT的变换区间N。误差主要来自于用FFT作频谱分析时,得到的是离散谱,而信号(周期信号除外)是连续谱,只有当N较大时,离散谱的包络才能逼近连续谱,因此N要适当选择大一些。同时N需为,n为整数,最后使用MATLAB信息处理工具箱中的函数fftxn),提供复数幅值的函数及plot函数画出相应的频谱图。
五、实验结果
已知模拟信号,根据表达式利用plot函数画出其频谱图,结果如下:






六、遇到的问题及解决方法

- 3 -

在整个课程设计过程中,由于之前对数字信号处理课程只是一种理论知识的认知并不是很深刻,而本次课程设计主要是针对以前的理论知识的一种更深刻的理解和应用,在实际操作的过程中刚开始一直无法获取到图形,后来发现是在编程的时候对一些参数的取值不太恰当,对信号进行谱分析的重要问题是频谱分辨率和分析误差。频谱分辨率直接和FFT的变换区间N有关,因为FFT能够实现的频率分辨率是2л/N≤。可以根据此式选择FFT的变换区间N。误差主要来自于用FFT作频谱分析时,得到的是离散谱,而信号是连续谱,只有当N较大时,离散谱的包络才能逼近于连续谱,因此N要适当选择大一些。对于fs的取值,理论中fsfc,一般就可以满足条件,但在实际应用中,为了满足N过大,所以我们取fs =5fc,由于刚开始fs的取值过小,导致最后的频谱图不是理想中的那样,在运用MATLAB的时候,由于之前接触MATLAB不是太多,对其中的一些函数功能并不是很熟悉,刚拿到老师布置的题目的时,对其进行了理论性的分析,查询了一些相关的书籍和资料,开始进行编程,但在最后的运行中,仍然出现不能够截取最有效那部分的图形,最后又开始查阅matlab的一些相关书籍,并通过老师的耐心指导及小组成员的尝试,最后得到满意的结果。
七、结论
在整个实习的过程中,我们从刚拿到题目有点懵,不知道用什么样的方法去实现频谱的分析,当经过第一天信息的查阅和第二天老师的耐心讲解到自己有了点头绪之后,开始计算和确定所需的参数值,一直到熟悉matlab的简单使用,这个过程都是学习和深刻理解之前理论知识的一个很好的机会,由不会用matlab到基本可以掌握简单用法,还有将课本上的理论知识用程序仿真展现在眼前有一种特别强烈的兴奋感和满足感。实习的目的就在于我们把理论性的东西能切切实实的变成实际应用,这不仅有利于我们对理论知识的理解,也可以强化我们的实际动手能力,这对我们今后的学习和生活中都有很大的实际意义。希望自己可以能有更多的机会将理论性的东西去转化成实际操作。
参考文献

[1] 数字信号处理及应用 卢光跃 北京人民邮电出版社 [2] 数字信号处理教程 陈佩青 北京清华大学出版社 [3] 数字信号处理 蒋正萍 北京电子工业出版社 [4] 快速傅里叶变换 E. O. 布赖姆 群译 [5] MATLAB程序设计教程 刘卫国 中国水利水电出版社
[6] 数字信号处理原理及实现 付丽琴,桂志国,王黎明 北京国防工业出


- 4 -



附录:
源代码: clear f1=2; f2=2.02; f3=2.07; fc=f3; df=f2-f1; fs=5*fc; n=fs/df; i=1 while(2^i<=n i=i+1; end N=2^i; T=N/fs; n=0:N-1; t=0.1*n x=sin(2*pi*f1*t+sin(2*pi*f2*t+sin(2*pi*f3*t; k=0:N/2; w=2*pi/N*k X=fft(x,N magX=abs(X(1:N/2+1; subplot(1,2,1;stem(n,x,'.';title('signal x'; subplot(1,2,2;stem(w/pi,magX,'.';title('FFT 1024'; axis ([0.3 0.5,0 600] xlabel('f (unit :pi';ylabel('|X|'; grid on;


- 5 -
线—————————————————————————————————————————————————————————
指导教师评语:


: 指导(辅导教师 :



- 6 -



- 7 -

本文来源:https://www.2haoxitong.net/k/doc/eadc0f1b7e192279168884868762caaedc33badb.html

《用fft对信号进行频谱分析报告.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式