实验2-FFT的实现..doc

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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)

sa1fs5g1xc1I + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档