- 1、本文档共6页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验2-FFT的实现.
电 子 科 技 大 学
实 验 报 告
学生姓名:于思宇 学 号:2801102023 指导教师:朱学勇
一、实验室名称:数字信号处理实验室
二、实验项目名称:FFT的实现
三、实验原理:
FFT算法思想:
DFT的定义:
对于有限长离散数字信号{x[n]},0 ? n ? N-1,其离散谱{x[k]}可以由离散付氏变换(DFT)求得。DFT的定义为:
,k=0,1,…N-1
通常令,称为旋转因子。
直接计算DFT的问题及FFT的基本思想:
由DFT的定义可以看出,在x[n]为复数序列的情况下,完全直接运算N点DFT需要(N-1)2次复数乘法和N(N-1)次加法。因此,对于一些相当大的N值(如1024)来说,直接计算它的DFT所作的计算量是很大的。
FFT的基本思想在于,将原有的N点序列分成两个较短的序列,这些序列的DFT可以很简单的组合起来得到原序列的DFT。例如,若N为偶数,将原有的N点序列分成两个(N/2)点序列,那么计算N点DFT将只需要约[(N/2)2 ·2]=N2/2次复数乘法。即比直接计算少作一半乘法。因子(N/2)2表示直接计算(N/2)点DFT所需要的乘法次数,而乘数2代表必须完成两个DFT。上述处理方法可以反复使用,即(N/2)点的DFT计算也可以化成两个(N/4)点的DFT(假定N/2为偶数),从而又少作一半的乘法。这样一级一级的划分下去一直到最后就划分成两点的FFT运算的情况。
基2按时间抽取(DIT)的FFT算法思想:
设序列长度为,L为整数(如果序列长度不满足此条件,通过在后面补零让其满足)。
将长度为的序列,先按n的奇偶分成两组:
,r=0,1,…,N/2-1
DFT化为:
上式中利用了旋转因子的可约性,即:。又令,则上式可以写成:
(k=0,1,…,N/2-1)
可以看出,分别为从中取出的N/2点偶数点和奇数点序列的N/2点DFT值,所以,一个N点序列的DFT可以用两个N/2点序列的DFT组合而成。但是,从上式可以看出,这样的组合仅表示出了前N/2点的DFT值,还需要继续利用表示的后半段本算法推导才完整。利用旋转因子的周期性,有:,则后半段的DFT值表达式:
,同样, (k=0,1,…,N/2-1),所以后半段(k=N/2,…,N-1)的DFT值可以用前半段k值表达式获得,中间还利用到,得到后半段的值表达式为:(k=0,1,…,N/2-1)。
这样,通过计算两个N/2点序列的N/2点DFT,可以组合得到N点序列的DFT值,其组合过程如下图所示:
-1
比如,一个N = 8点的FFT运算按照这种方法来计算FFT可以用下面的流程图来表示:
基2按频率抽取(DIF)的FFT算法思想:
设序列长度为,L为整数(如果序列长度不满足此条件,通过在后面补零让其满足)。
在把按k的奇偶分组之前,把输入按n的顺序分成前后两半:
因为,则有,所以:
按k的奇偶来讨论,k为偶数时:
k为奇数时:
前面已经推导过,所以上面的两个等式可以写为:
通过上面的推导,的偶数点值和奇数点值分别可以由组合而成的N/2点的序列来求得,其中偶数点值为输入x[n]的前半段和后半段之和序列的N/2点DFT值,奇数点值为输入x[n]的前半段和后半段之差再与相乘序列的N/2点DFT值。
令,,则有:
这样,也可以用两个N/2点DFT来组合成一个N点DFT,组合过程如下图所示:
-1
在FFT计算中使用到的MATLAB命令:
函数fft(x)可以计算R点序列的R点DFT值;而fft(x,N)则计算R点序列的N点DFT,若RN,则直接截取R点DFT的前N点,若RN,则x先进行补零扩展为N点序列再求N点DFT。函数ifft(X)可以计算R点的谱序列的R点IDFT值;而ifft(X,N)同fft(x,N)的情况。
四、实验目的:
离散傅氏变换(DFT)的目的是把信号由时域变换到频域,从而可以在频域分析处理信息,得到的结果再由逆DFT变换到时域。FFT是DFT的一种快速算法。在数字信号处理系统中,FFT作为一个非常重要的工具经常使用,甚至成为DSP运算能力的一个考核因素。
本实验通过直接计算DFT,利用FFT算法思想计算DFT,以及使用MATLAB函数中的FFT命令计算离散时间信号的频谱,以加深对离散信号的DFT变换及FFT算法的理解。
五、实验内容:
计算实数序列的256点
文档评论(0)