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

上传人:b****2 文档编号:22812621 上传时间:2023-04-28 格式:DOCX 页数:12 大小:148.94KB
下载 相关 举报
用fft对信号进行频谱分析报告.docx_第1页
第1页 / 共12页
用fft对信号进行频谱分析报告.docx_第2页
第2页 / 共12页
用fft对信号进行频谱分析报告.docx_第3页
第3页 / 共12页
用fft对信号进行频谱分析报告.docx_第4页
第4页 / 共12页
用fft对信号进行频谱分析报告.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

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

《用fft对信号进行频谱分析报告.docx》由会员分享,可在线阅读,更多相关《用fft对信号进行频谱分析报告.docx(12页珍藏版)》请在冰豆网上搜索。

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

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

 

西安邮电大学

通信与信息工程学院

科研训练报告

 

专业班级:

学生姓名:

学号(班内序号):

2014年9月16日

 

用FFT对信号进行频谱分析

摘要:

快速傅氏变换(FFT),是离散傅氏变换的快速算法,它是根据离散傅氏变换的奇、偶、虚、实等特性,对离散傅立叶变换的算法进行改进获得的。

它对傅氏变换的理论并没有新的发现,但是对于在计算机系统或者说数字系统中应用离散傅立叶变换,可以说是进了一大步。

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

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

Abstract

FastFourierTransform(FFT),isadiscretefastFouriertransformalgorithm,whichisbasedontheDiscreteFourierTransformofoddandeven,false,false,andothercharacteristicsoftheDiscreteFourierTransformalgorithmsimprovementsobtained.ItsFouriertransformtheoryhasnotfoundanew,butinthecomputersystemortheapplicationofdigitalsystemsDiscreteFourierTransformcanbesaidtobeabigstepinto.Fouriertransformtheoryandmethodsinthe"mathematicalequation"and"linearsystemsanalysis"and"signalprocessing,simulation,"andmanyotherareashaveawiderangeofapplications,asthecomputercanonlyhandlealimitedlengthofthesequenceofdiscrete,sotrueOnthecomputer'soperationisadiscreteFouriertransform.FourierAlthoughallaspectsofcomputinginthecalculationhasanimportantrole,butitscalculationwastoocomplicated,alotofcomputingsystemforcalculatingtheburdenistoolargeforsomeLesspowerconsumption,theslowspeedofoperationofitssystematarm'slength,however,havethefastFouriertransform,Fouriertransformgreatlysimplifyingthemaking,notinpowerattheexpenseoftheconditionstoincreasethespeedofcomputingsystems,andenhancethesystemThecomprehensiveabilitytoimprovethespeedofoperation,theFastFourierTransformintheproductionandlifehaveaveryimportantroleinlearningtomasterallhavegreatsignificance.

Keywords:

 FastFourierTransform;SignalspectrumanalysisDiscreteFourierTransform

 

引言:

1965年,库利(J.W.Cooley)和图基(J.W.Tukey)在《计算数学》杂志上发表了“机器计算傅立叶级数的一种算法”的文章,这是一篇关于计算DFT的一种快速有效的计算方法的文章。

它的思路建立在对DFT运算内在规律的认识之上。

这篇文章的发表使DFT的计算量大大减少,并导致了许多计算方法的发现。

这些算法统称为快速傅立叶变换(FastFourierTransform),简称FFT,1984年,法国的杜哈梅尔(P.Dohamel)和霍尔曼(H.Hollmann)提出的分裂基快速算法[2][6]

使运算效率进一步提高。

FFT即为快速傅氏变换,是离散傅氏变换的快速算法,它是根据离散傅氏变换的奇、偶、虚、实等特性,对离散傅立叶变换的算法进行改进获得的。

它对傅氏变换的理论并没有新的发现,但是对于在计算机系统或者说数字系统中应用离散傅立叶变换,可以说是进了一大步。

随着科学的进步,FFT算法的重要意义已经远远超过傅里叶分析本身的应用。

FFT算法之所以快速,其根本原因在于原始变化矩阵的多余行,此特性也适用于傅里叶变换外的其他一些正交变换,例如,快速沃尔什变换、数论变换等等。

在FFT的影响下,人们对于广义的快速正交变换进行了深入研究,使各种快速变换在数字信号处理中占据了重要地位。

因此说FFT对数字信号处理技术的发展起了重大推动作用。

一、问题重述

X(t)=sin(2πf1t)+sin(2πf2t)+sin(2πf3t)

其中f1=2Hz,f2=2.02Hz,f3=2.07Hz。

试确定参数fx,N和相应模拟信号x(t)的长度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)抽样频率fs和DFT所需点数N确定后,就可以确定所需相应模拟信号的长度T,

T=N/fS=NTs

Ts为信号的采样间隔。

2、课程设计目的

1.熟悉MATLAB的使用方法,其中包括了解简单函数、了解原理和掌握操作方法;

2.熟悉课程设计的过程及正是论文的写法。

3.通过实验加深对FFT的理解;

4.熟悉应用FFT对典型信号进行频谱分析的方法。

5.增强在通信原理仿真方面的动手能力与自学能力;

6.完成之后,再遇到类似的问题时,学会对所面对的问题进行系统的分析,并能从多个方面进行比较。

三、实验原理

数字信号的傅里叶变换,通常采用离散傅里叶变换(DFT)方法。

DFT存在的不足是计算量太大,很难进行实时处理。

计算一个N点的DFT,一般需要

次复数乘法和N(N-1)次复数加法运算.因此,当N较大或要求对信号进行实时处理时,往往难以实现所需的运算速度。

1965年,J.W.Cooly和J.W.Tukey发现了DFT的一种快速算法,经其他学者进一步改进,很快形成了一套高效运算方法,这就是现在通用的快速傅里叶变换,简称FFT(TheFastFourierTransform)。

快速傅里叶变换的实质是利用式

(1)中的权函数

的对称性和周期性,把N点DFT进行一系列分解和组合,使整个DFT的计算过程变成一系列叠代运算过程,使DFT的运算量大大简化,为DFT及数字信号的实时处理和应用创造了良好的条件。

快速傅里叶变换算法如下:

(1)式可知,对每一个n,计算X(n)须作N次复数乘法及N-1次复数加法,要完成这组变换共需次乘法及N(N-1)次复数加法。

但以下介绍的快速傅里叶变换的算法,可大大减少运算次数,提高工作效率。

时,n和k可用二进制数表示:

又记 

(1)式可改写为

(2)

式中:

(3)

因为

所以

(2)可改成

(4)

(5)

则式(5)即为式(4)的分解形式。

将初始数据代入式(5)的第一个等式,可得每一组计算数据,一般将痗L-1组计算数据代入式(5)的第L个等式,计算后可得第L组计算数据(L=1,2,…,γ),计算公式也可表示为

=

(6)

式中

(7)

根据式(6),第L个数组中每个

    的计算只依赖于上一个数组的两个数据这两个数据的标号相差

,即

,而且这两个数据只用于计算第L个数组中标号的数据(等号右端为二进制数)。

分别取0和1时,分别有

因此,用上一组的两个数据计算所得的两个新数据仍可储存在原来位置,计算过程中只需要N个存储器。

称为第L个数组中的对偶结点对。

计算每个对偶结点对只需一次乘法,事实上由式(6)可得

式中:

别为式(7)中

取0,1时对应的P值。

,于是对偶结点的

有如下关系:

因此式(6)可表示为

P的求法:

中,i写成二进制数

右移

位,就成为

颠倒位序得

式(5)吕,前面的γ个等式,每个等式均对应一组数据进行计算,每组数据都有N/2对结点,根据式(9),每对结点只需作1次乘法和2次加法,因此,每组数据只需N/2次乘法和N次加法,因而完成γ组数据的计算共需Nγ/2次乘法和Nγ次加法。

四、问题分析

本题主要要求应用FFT对典型信号进行频谱分析,最后使用MATLAB程序实现信号频域特性的分析。

编写程序时,首先得先计算和确定一些参数的取值,根据已知题,确定最高频率fc=f3,根据实际需求,选择f3=5fc,然后确定采样点数N,对信号进行谱分析的重要问题是频谱分辨率和分析误差。

频谱分辨率直接和FFT的变换区间N有关,因为FFT能够实现的频率分辨率是2π/N,因此要求2π/N小于等于。

可以根据此式选择FFT的变换区间N。

误差主要来自于用FFT作频谱分析时,得到的是离散谱,而信号(周期信号除外)是连续谱,只有当N较大时,离散谱的包络才能逼近连续谱,因此N要适当选择大一些。

同时N需为,n为整数,最后使用MATLAB信息处理工具箱中的函数fft(x,n),提供复数幅值的函数及plot函数画出相应的频谱图。

五、实验结果

已知模拟信号,根据表达式利用plot函数画出其频谱图,结果如下:

 

 

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

在整个课程设计过程中,由于之前对数字信号处理课程只是一种理论知识的认知并不是很深刻,而本次课程设计主要是针对以前的理论知识的一种更深刻的理解和应用,在实际操作的过程中刚开始一直无法获取到图形,后来发现是在编程的时候对一些参数的取值不太恰当,对信号进行谱分析的重要问题是频谱分辨率和分析误差。

频谱分辨率直接和FFT的变换区间N有关,因为FFT能够实现的频率分辨率是2л/N≤。

可以根据此式选择FFT的变换区间N。

误差主要来自于用FFT作频谱分析时,得到的是离散谱,而信号是连续谱,只有当N较大时,离散谱的包络才能逼近于连续谱,因此N要适当选择大一些。

对于fs的取值,理论中fsfc,一般就可以满足条件,但在实际应用中,为了满足N过大,所以我们取fs=5fc,由于刚开始fs的取值过小,导致最后的频谱图不是理想中的那样,在运用MATLAB的时候,由于之前接触MATLAB不是太多,对其中的一些函数功能并不是很熟悉,刚拿到老师布置的题目的时,对其进行了理论性的分析,查询了一些相关的书籍和资料,开始进行编程,但在最后的运行中,仍然出现不能够截取最有效那部分的图形,最后又开始查阅matlab的一些相关书籍,并通过老师的耐心指导及小组成员的尝试,最后得到满意的结果。

7、结论

在整个实习的过程中,我们从刚拿到题目有点懵,不知道用什么样的方法去实现频谱的分析,当经过第一天信息的查阅和第二天老师的耐心讲解到自己有了点头绪之后,开始计算和确定所需的参数值,一直到熟悉matlab的简单使用,这个过程都是学习和深刻理解之前理论知识的一个很好的机会,由不会用matlab到基本可以掌握简单用法,还有将课本上的理论知识用程序仿真展现在眼前有一种特别强烈的兴奋感和满足感。

实习的目的就在于我们把理论性的东西能切切实实的变成实际应用,这不仅有利于我们对理论知识的理解,也可以强化我们的实际动手能力,这对我们今后的学习和生活中都有很大的实际意义。

希望自己可以能有更多的机会将理论性的东西去转化成实际操作。

参考文献

[1]数字信号处理及应用卢光跃北京人民邮电出版社

[2]数字信号处理教程陈佩青北京清华大学出版社

[3]数字信号处理蒋正萍北京电子工业出版社

[4]快速傅里叶变换E.O.布赖姆柳 群译

[5]《MATLAB程序设计教程》刘卫国中国水利水电出版社

[6]数字信号处理原理及实现付丽琴,桂志国,王黎明北京国防工业出版

 

附录:

源代码:

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('signalx');

subplot(1,2,2);stem(w/pi,magX,'.');title('FFT1024');

axis([0.30.5,0600])

xlabel('f(unit:

pi)');ylabel('|X|');

gridon;

 

——————————————————————————装订线—————————————————————————————————

指导教师评语:

 

实验成绩:

指导(辅导)教师:

 

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 表格模板 > 表格类模板

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1