人人范文网 范文大全

数字信号处理实验FFT的实现

发布时间:2020-03-02 08:25:06 来源:范文大全 收藏本文 下载本文 手机版

学生姓名:

学 号:

指导教师:

一、实验室名称:数字信号处理实验室

二、实验项目名称:FFT的实现

三、实验原理:

一.FFT算法思想:

1.DFT的定义:

对于有限长离散数字信号{x[n]},0  n  N-1,其离散谱{x[k]}可以由离散付氏变换(DFT)求得。DFT的定义为:

N1X[k]通常令ej2Nx[n]en0j2Nnk,k=0,1,…N-1 WN,称为旋转因子。

2.直接计算DFT的问题及FFT的基本思想:

由DFT的定义可以看出,在x[n]为复数序列的情况下,完全直接运算N点DFT需要(N-1)2次复数乘法和N(N-1)次加法。因此,对于一些相当大的N值(如1024)来说,直接计算它的DFT所作的计算量是很大的。

FFT的基本思想在于,将原有的N点序列分成两个较短的序列,这些序列的DFT可以很简单的组合起来得到原序列的DFT。例如,若N为偶数,将原有的N

22点序列分成两个(N/2)点序列,那么计算N点DFT将只需要约[(N/2) ·2]=N/2次复数乘法。即比直接计算少作一半乘法。因子(N/2)2表示直接计算(N/2)点DFT所需要的乘法次数,而乘数2代表必须完成两个DFT。上述处理方法可以反复使用,即(N/2)点的DFT计算也可以化成两个(N/4)点的DFT(假定N/2为偶数),从而又少作一半的乘法。这样一级一级的划分下去一直到最后就划分成两点的FFT运算的情况。

3.基2按时间抽取(DIT)的FFT算法思想:

设序列长度为N2L,L为整数(如果序列长度不满足此条件,通过在后面补零让其满足)。

将长度为N2L的序列x[n](n0,1,...,N1),先按n的奇偶分成两组:

x[2r]x1[r]x[2r1]x2[r],r=0,1,…,N/2-1 DFT化为:

N1N/21N/21X[k]DFT{x[n]}N/21n0x[n]WnkN2rkr0x[2r]W2rkNr0x[2r1]WN(2r1)kN/21r0N/21x1[r]Wx1[r]W2rkNWWkNr0N/21x2[r]WN

r0rkN/2kNr0x2[r]WN/22rkrk上式中利用了旋转因子的可约性,即:WNN/21NrkN/21rkWN/2。又令

rkX1[k]r0x[1r]W,/X2[k]2r0x[r]WN2,则上式可以写成: /2X[k]X1[k]WNX2[k](k=0,1,…,N/2-1)

k可以看出,X1[k],X2[k]分别为从X[k]中取出的N/2点偶数点和奇数点序列的N/2点DFT值,所以,一个N点序列的DFT可以用两个N/2点序列的DFT组合而成。但是,从上式可以看出,这样的组合仅表示出了X[k]前N/2点的DFT值,还需要继续利用X1[k],X2[k]表示X[k]的后半段本算法推导才完整。利用旋转因子的周期性,有:WN/2WN/2X1[N2N/21rkr(kN/2),则后半段的DFT值表达式:

rkk]r0x1[r]W2N/2r(Nk)N/21r0x1[r]WN/2X1[k],同样,X2[N2k]X2[k]

(k=0,1,…,N/2-1),所以后半段(k=N/2,…,N-1)的DFT值可以用前半段k值表达式获得,中间还利用到WN(N2k)NWN2Wk得到后半段的X[k]值表达式W,

k为:X[k]X1[k]WNkX2[k](k=0,1,…,N/2-1)。

这样,通过计算两个N/2点序列x1[n],x2[n]的N/2点DFTX1[k],X2[k],可以组合得到N点序列的DFT值X[k],其组合过程如下图所示:

X1[k] X1[k]WNkX2[k]

X2[k] WNnk -1 X1[k]WNkX2[k]

比如,一个N = 8点的FFT运算按照这种方法来计算FFT可以用下面的流程图来表示:

x(0)W0x(1)W0x(2)W0x(3)W2W0W1W0x(5)W0x(6)W0x(7)W2X(7)W3X(6)W2X(5)X(3)X(2)X(1)X(0)x(4)X(4)

4.基2按频率抽取(DIF)的FFT算法思想:

设序列长度为N2L,L为整数(如果序列长度不满足此条件,通过在后面补零让其满足)。

在把X[k]按k的奇偶分组之前,把输入按n的顺序分成前后两半:

N1N/21nkNN1X[k]DFT{x[n]}N/21N/21x[n]Wn0(nn0N2)kx[n]WnkNnN/2x[n]WNnkn0N/21x[n]WnkNn0x[nNkN2]WNnk

Nn0[x[n]x[nN2NkN2]W2N]WN,k0,1,...,N1因为W2N1,则有WX[k](1),所以:

kkN/21n0[x[n](1)x[nN2]]WN,k0,1,...,N1

nk按k的奇偶来讨论,k为偶数时:

N/21X[2r]n0[x[n]x[nN2]]WN,k0,1,...,N1 N22rnN/21k为奇数时:X[2r1]前面已经推导过WNN/21n0[x[n]x[n]]WN(2r1)n,k0,1,...,N1

2rkWN/2,所以上面的两个等式可以写为:

N2]]WN/2,r0,1,...,N/21 N2rnrkX[2r]n0[x[n]x[nN/21X[2r1]n0{[x[n]x[n]]WN}WN/2,r0,1,...,N/21

nnr通过上面的推导,X[k]的偶数点值X[2r]和奇数点值X[2r1]分别可以由组合而成的N/2点的序列来求得,其中偶数点值X[2r]为输入x[n]的前半段和后半段之和序列的N/2点DFT值,奇数点值X[2r1]为输入x[n]的前半段和后半段之差再与WN相乘序列的N/2点DFT值。

令x1[n]x[n]x[nN/21nN2],x2[n][x[n]x[nN/21N2]]WN,则有:

nX[2r]n0x1[n]WrnN/2,X[2r1]n0x2[n]WrnN/2,r0,1,...,N21

这样,也可以用两个N/2点DFT来组合成一个N点DFT,组合过程如下图所示:

x[n] x[n]x[nN2]

x[nN2] -1 WNn [x[n]x[nN2]]WNn

二.在FFT计算中使用到的MATLAB命令:

函数fft(x)可以计算R点序列的R点DFT值;而fft(x,N)则计算R点序列的N点DFT,若R>N,则直接截取R点DFT的前N点,若R

四、实验目的:

离散傅氏变换(DFT)的目的是把信号由时域变换到频域,从而可以在频域分析处理信息,得到的结果再由逆DFT变换到时域。FFT是DFT的一种快速算法。在数字信号处理系统中,FFT作为一个非常重要的工具经常使用,甚至成为DSP运算能力的一个考核因素。

本实验通过直接计算DFT,利用FFT算法思想计算DFT,以及使用MATLAB函数中的FFT命令计算离散时间信号的频谱,以加深对离散信号的DFT变换及FFT算法的理解。

五、实验内容:

a) 计算实数序列x(n)cos516n,0n256的256点DFT。

b) 计算周期为1kHz的方波序列(占空比为50%,幅度取为+/-512,采样频率为25kHz,取256点长度) 256点DFT。

六、实验器材(设备、元器件):

安装MATLAB软件的PC机一台,DSP实验演示系统一套。

七、实验步骤:

(1) 先利用DFT定义式,编程直接计算2个要求序列的DFT值。

(2) 利用MATLAB中提供的FFT函数,计算2个要求序列的DFT值。 (3) (拓展要求)不改变序列的点数,仅改变DFT计算点数(如变为计算1024点DFT值),观察画出来的频谱与前面频谱的差别,并解释这种差别。通过这一步骤的分析,理解频谱分辨力的概念,解释如何提高频谱分辨力。

(4) 利用FFT的基本思想(基2-DIT或基2-DIF),自己编写FFT计算函数,并用该函数计算要求序列的DFT值。并对前面3个结果进行对比。

(5) (拓展要求)尝试对其他快速傅立叶变换算法(如Goertzel算法)进行MATLAB编程实现,并用它来计算要求的序列的DFT值。并与前面的结果进行对比。

(6) (拓展要求)在提供的DSP实验板上演示要求的2种序列的FFT算法(基2-DIT),用示波器观察实际计算出来的频谱结果,并与理论结果对比。

八、实验数据及结果分析:

程序: (1) 对要求的2种序列直接进行DFT计算的程序

(2) 对要求的2种序列进行基2-DIT和基2-DIF FFT算法程序 (3) 对要求的2种序列用MATLAB中提供的FFT函数进行计算的程序

结果:(1)对2种要求的序列直接进行DFT计算的频域波形

(2)对2种要求的序列进行基2-DIT和基2-DIF FFT算法频域波形 (3)对2种要求的序列用MATLAB中提供的FFT函数计算的频域波形。 (4)(拓展要求)分析利用上面的方法画出的信号频谱与理论计算出来的频谱之间的差异,并解释这种差异。

(5)(拓展要求)保持序列点数不变,改变DFT计算点数(变为1024点),观察频谱的变化,并分析这种变化,由此讨论如何提高频谱分辨力的问题。

九、实验结论:

十、总结及心得体会:

十一、对本实验过程及方法、手段的改进建议:

数字信号处理实验

MATLAB实现数字信号处理

数字信号处理实验讲稿

数字信号处理实验教案

数字信号处理实验二

数字信号处理实验5

数字信号处理实验4

《数字信号处理原理及实现》课程小结

《数字信号处理》教学大纲

数字信号处理课程设计

数字信号处理实验FFT的实现
《数字信号处理实验FFT的实现.doc》
将本文的Word文档下载到电脑,方便编辑。
推荐度:
点击下载文档
点击下载本文文档