FFT在功率谱密度计算中的应用

上传人:ni****g 文档编号:501949614 上传时间:2023-02-06 格式:DOCX 页数:23 大小:636.03KB
返回 下载 相关 举报
FFT在功率谱密度计算中的应用_第1页
第1页 / 共23页
FFT在功率谱密度计算中的应用_第2页
第2页 / 共23页
FFT在功率谱密度计算中的应用_第3页
第3页 / 共23页
FFT在功率谱密度计算中的应用_第4页
第4页 / 共23页
FFT在功率谱密度计算中的应用_第5页
第5页 / 共23页
点击查看更多>>
资源描述

《FFT在功率谱密度计算中的应用》由会员分享,可在线阅读,更多相关《FFT在功率谱密度计算中的应用(23页珍藏版)》请在金锄头文库上搜索。

1、FFT在功率谱密度计算中的应用FFT在功率谱密度计算中的应用一、FFT算法理论依据和编程思想FFT算法的基本思想:考察DFT与IDF1的运算发现,利用以下两个特性可减少运算量:I)系数崂=是一个周期函数,它的周期性和对称性可利用来改进运算,提高计算效率。如:3甘一11叭阴)=停炉啕=噌因此啥第一侑利用这些周期性和对称性,DFT运算中有些项可合并;n)利用Wk的周期性和对称性,把长度为N点的大点数的DFT运算分解为若干个小点数的DFT因为DFT的计算量正比于N2,N小计算量也就小。FFT算法正是基于这样的基本思想发展起来的。它有多种形式,下面是按时间抽取的FFT(N点DFT运算的分解)先从一个特

2、殊情况开始,假定N是2的整数次方,N=2M正整数1 .将N点的DFT分解为两个N/2点的DFT:首先将序列x(n)分解为两组,一组为偶数项,一组为奇数项(x(2r)二工式力x(2r+l) = x2(r)将DFT运算也相应分为两组:r=0,1,N/2-1%】如X(k)二Z玉噂八同r=U为=+上)其中Xi(k)和X2(k)分别是xi(r)和X2(r)的N/2点DFT)可见,一个N点的DFT可以分解为两个N/2点的DF1这两个N/2点的DFT再按照上面(1)式合成为一个N点DFT,注意到,Xi(k),X2(k)有N/2个点,即k=0,1,N/2-1,由(1)式得到X(k)只有N/2点,而实际上X(k

3、)有N个点,即k=0,1,N-1,要用Xi(k),X2(k)表示全部X(K)值,还必须应用系数w的周期性和对称性。2 .X(k)的(N/2)N-1点表示:由X(k尸Xi(k)+WnX2(k),k=0,1,2,N/2-1NNNX(g+4)=工(5一)+相互(万+的(2a)?因为,N八怯 他闻 且f匚,毋二工石(力破二石四)J?=0力同样丫式彳+的二用电N*4小k-一1匚考虑到wh寸称性:故双彳+行=故)一(以2=01,;岑一1(2b)(2a)式表示了X(k)前半部分k=0N/2-1时的组成方式,(2b)式则表示了后半部分k=N/2N-1时的组成方式。这两式所表示的运算过程可用一个称作蝶形的信号流

4、图来表示。L(k).-0)畸XXk)X式k)K:、X(k)(b)国i,蝶影运算流省符号3 .蝶形信号流图:如图1(a)所示,图中左面两支为输入,中间以一个小圆圈表示加、减运算,右上支为相加输出,右下支为相减输出,如果在某一支路上信号需要进行乘法运算,则在该支路上标以箭头,并将相乘的系数标在简头边,这样(2a),(2b)所表示的运算,可用图1(b)所表示的“蝶形结”来表示。采用这种表示法,可将以上以讨论的分解过程用计算流图来表示。图2.6所示为N=5=8的例子。通过这样分解以后,每一个N/2点DFT只需要图2.6,N点DFT分解为2个N/2点DFT(N=8)图2.6N点DFT分解为2个N/2点D

5、FT(N=8)(N/2)2=N2/4次复数乘法运算,两个N/2点的DFT需要2(N/2)2=N2/2次复乘,再加上将两个N/2点DFT合成为N点DFT时,在蝶形结前的N/2次复乘,共需要(N/2)2+N/2-M/2次复乘,由此可见,经过这样的分解处理,运算量差不多节省了一倍。4 .将N/2点的DFT分解为两个N/4点的DFT:既然这样分解是有效的,由于N=ZN/2仍然是偶数,因此可对两个N/2点的DFT再分别作进一步分解,例如对xi(r)和X2(r)可以再按其偶数部分及奇数部分分解为两个N/4点的DFI既然这样分解是有效的,由于N=ZN/2仍然是偶数,因此可对两个N/2点的DFT再分别作进一步

6、分解,例如对xi(r)和X2(r)可以再按其偶数部分及奇数部分分解为两个N/4点的DFT,为(2/+1)二川(,)1=0,1,,N/4-1J=0唠+却即VX(i) X2)XX4) A (5) X()X(7)而.*1仆ikJ4/2同样X2(k)也可这样分解,并且将系数统一为吃=崂,这样一个8点DFT就可分解为/I四个2点的DFI如图2.7所示。工3不(4)工图2.7N点DFT分解为4个N/4点的DFT(N=8)5 .2个点DFT的表示:最后剩下的是2点DF它可以用一个蝶形结表示,例如,x(0),x(4)所组成的2点DFTM可表示式:尚0)-j(0)+鹫似4)=工十%乙-确)-畛#4)-或-町R4

7、)这样,一个8点的完整的按时间抽取运算的流图如图2.8所示由于这样的方法每一步分解都是按输入时间序列是属于偶数还是奇数来抽取的,所以称为“按时间抽取法”或“时间抽取法”。6.时间抽取法FFT运算特点:)(0) m (4) r(2)x (6)x(5)*(3)*(7)X(0)X(l)X(2)X(3)X(4)X(5)XC6)XC7)32. 8.48的按时间抽取法FFT计算流驾(1)蝶形运算对任何一2的整数幕N=Z总是可以通过M次分解最后完全成为2点的DFT运算。这样的M次分解,就构成从x(n)到X(k)的M级运算过程。从上面的流图可看到,每一级运算都由N/2个蝶形运算构成。因此每一级运算都需要N/2

8、次复乘和N次复加(每个结作加、减各一次),这样,经过时间抽取后M级运算总共.要的运算:复乘_*I-_11复力口NM=NlogN实际运算量与这个数字稍有出入,因为w:4W=-L/二七这几个系数实际上都不用乘法运算,因此在上面N=8的例子中,实际上只有两个系数W1及W是需要乘法运算的。用时间抽取法所需的计算量,不论是复乘还是复加都与Nlog2N成正比,而直接运算时则与M成正比。例N=2048,M=4194304,(N/2)log2N=11264,N7(N/2)log2N=392.4倍。FFT显然要比直接法快得多。(2)原位计算当数据输入到存储器中以后,每一级运算的结果仍然储存在同一组存储器中,直到

9、最后输出,中间无需其它存储器,这叫原位计算。例如,N=8的FFT运算,输入x(0),x(4),x(2),x(6)可分别存入A(1),A(2),,A(8)这9个存储单元中,在第一级运算中,首先是存储单元A(1),A(2)中x(0),x(4)进入蝶形运算,x(0),x(4)输入运算器后,其数值不再需要保存,因此蝶形运算的结果可仍然送回存储单元A(1),A(2)中保存,然后A(3),A(4)中x(2),x(6)再进入蝶形运算,其结果再送回A(3),A(4),一直到算完A(7),A(8),则完成了第一级运算过程。第二级运算仍可采用这种原位的方式,但是进入蝶形结的组合关系不同,首先进入蝶形结的是A(1)

10、、A(3)存储单元中的数据,运算结果仍可送回A(1)、A(3)保存,然后进入蝶形结的是A(2)、A(4),依此类推,每一级运算均可在原位进行,这种原位运算结构可节省存储单元,降低设备成本,还可节省找地址的时间。(3)序数重排对按时间抽取FFT的原位运算结构,当运算完毕时,这种结构存储单元A(1)、A(2),A(8)中正好顺序存放着X(0),X(1),X(2),X(7),因此可直接按顺序输出,但这种原位运算的输入x(n)却不能按这种自然顺序存入存储单元中,而是按X(0),X(4),X(2),X(6),X(7)的顺序存入存储单元,这种顺序看起来相当杂乱,然而它也是有规律的。当用二进制表示这个顺序时

11、,它正好是“码位倒置”的顺序。例如,原来的自然顺序应是x(1)的地方,现在放着x(4),用二进制码表示这一规律时,则是在x(001)处放着x(100),x(011)处放着x(110)。即将自然顺序的二进制码位倒置过来,第一位码变成最末位码,这样倒置以后的顺序正是输入所需要的顺序。下表列出N=8时按码位倒置规律所得的顺序,其结果与按时间抽取FFT流图中的输入顺序是一致的。表一码位倒置顺序自然顺序一进码表小码位倒置码位倒置顺序0000000010011004201001023011110641000011510110156110011371111117在实际运算中,一般直接将输入数据x(n)按码位

12、倒置的顺序排好输入很不方便,总是先按自然顺序输入存储单元,然后再通过变址运算将自然顺序的存储转换成码位倒置顺序的存储,然后进行FFT的原位计算。目前有许多通用DSP芯片支持这种码位倒置的寻址功能。(4)蝶形类型随迭代次数成倍增加观察8点FFT的三次迭代运算第一级迭代,只有一种类型的蝶形运算系数V08第二级迭代,有二种类型的蝶形运算系数W8、W28,参加运算的两个数据点间隔为2。第三级迭代,有四类蝶形运算系数WWWW38,参加运算的两个数据点间隔为4。所以,每次迭代的蝶形类型比上一次蝶代增加一倍,数据点间隔也增大一倍。7.功率谱密度的计算根据相关定理与维纳-辛钦关系式可得随机信号序列x(n)的功

13、率谱密度12鼠(k)NimNx的其估计值12一Sx(k)-|X(k)(2)N如果观察到序列x(n)的N个值,即x(0),x(1),-x(N-l),就可以通过FFT直接求得X(k),再按式(2)求得Sx(k),其计算过程如图2.9所示。图2.9周期图法计、程序设计和蝶式运算本设计在主程序中分别调用了输入get_in()、倒序re_order()butterfly。,功率谱密度计算power(),绘图on_draw五个子函数。1.程序框图(1)运算主程序框图图5运算主程序框图.3尹曝序程序流程图(3)蝶形运算框图三、程序源代码主程序/FFT.cpp:Definestheclassbehaviorsfortheapplication.#includestdafx.h#includeFFT.h#includeFFTDlg.h/自己添加的.#includemath.h#ifdef_DEBUG#definenewDEBUG_NEW#undefTHIS_FILEstaticcharTHIS_FILE口=_FILE_;#endif/CFftDrawingAppBEGIN_MESSAGE_MAP(CFftDrawingApp,CWinApp)AFX_MSG_MAP(CFftDrawingApp)/NOTE-theCla

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 营销创新

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号