关于DFT与FFT运算速度的比较
更新时间:2024-01-01 13:32:01 阅读量: 教育文库 文档下载
离散傅里叶变换
赵德华
(哈尔滨工业大学 电子与信息工程学院 0705201班)
摘要:本文简要介绍了DFT的原理及其FFT实现算法。以实例验证DFT与FFT的等效性,并在VC6.0环境下对DFT与FFT的计算时间做了系统比较,验证理论得出的关系。
关键词:DFT,FFT,计算速度,C程序
Discrete Fourier Transform
Zhao Dehua
(Electronics and Information Department, Harbin Institute of Technology)
Abstract:This paper briefly introduces the principle of DFT and FFT.It verifies the equivalent of DFT and FFT with sevel examples.It also comples the elapsed time of DFT and FFT in VC6.0 to verify the theory. Key words: DFT, FFT, calculating speed , C program
目录
0.引言…………………………………………………………………………………………………………………………………………………………1 1.DFT与FFT的定义………………………………………………………………………………………………………………………………..1 2.DFT与FFT等价性验证………………………………………………………………………………………………………………………..2 3.DFT与FFT运算速度比较…………………………………………………………………………………………………………………….3 4.总结………………………………………………………………………………………………………………………………………………………..6 参考文献……………………………………………………………………………………………………………………………………………………6
0.引言
离散傅里叶变换(Discrete Fourier Transform),是连续傅里叶变换在时域和频域上都离散的形式,将时域信号的采样变换为在离散时间傅里叶变换(DTFT)频域的采样。在形式上,变换两端(时域和频域上)的序列是有限长的,而实际上这两组序列都应当被认为是离散周期信号的主值序列。即使对有限长的离散信号作DFT,也应当将其看作经过周期延拓成为周期信号再作变换。离散傅里叶变化的出现解决了信号离散化的问题,从而使其在数字滤波、功率谱分析、仿真、系统分析、通信方面得以应用。
快速傅里叶变换(Fast Fourier Transform),是离散傅里叶变换的快速算法,它是根据离散傅里叶变换的奇、偶、虚、实等特性,对离散傅立叶变换的算法进行改进获得的。由于它应用的理论基础仍是离散傅里叶变换,所以它对离散傅里叶变换的理论并没有新的发现,但是对于在计算机系统或者说数字系统中应用离散傅立叶变换,可以说是进了一大步。
快速傅里叶变化最早于1965年由Cooly和Tukey提出,这使离散傅里叶变化运算次数由N2减少为Nlog2N次,使得离散傅里叶变换应用于实际变成现实。目前,快速傅里叶变化技术已广泛应用于各个领域,成为数字信号处理技术的一个重要组成部分。离散傅里叶变化除了本文介绍的基2快速傅里叶变化算法外,他们都不同程度上减少了运算次数,如戈泽尔(Goertzel)算法、Chirp-Z变化(CZT)算法、Winograd Fast Transform Alogrithm(WFTA)等。本文将仅介绍基2快速傅里叶变化。
1. DFT与FFT的定义
DFT的定义:设h?nTs?是连续函数h(t)的N个抽样值n?0,1,?,N?1,这N个点的宽度为N的DFT为:
第 1 页 共 10 页
DFTN?h(nTs)??N?1??kh(nTs)e?j2?nk/N?H??NTs?n?0??k???,(k?0,1,...,N?1)。H与之对应的反变换,即IDFT的定义:设?NT?s??k?0,1,?,N?1????是连续频率函数
??1DFTN?H???k???NTs??1???????NH(f)N?1的N个抽样值, 这N个点的宽度为N的IDFT为:
?kH??NTsk?0????j2?nk/N??e?h?nTs?,(k?0,1,..N.,?1)。其中e?j2?nk/N称为N点DFT的变换核函数,??N?1ej2?nk/N称为N点IDFT的变换核函数。它们互为共轭。如果引入WN?e?j2?/N,正逆变换的核函数分别可以
nknk?nk?表示为WN和WN。DFT可以表示为:H??NT???h(nTs)WN,?s?n?0?k?(k?0,1,?,N?1),IDFT可以表示为:
h(nTs)?1NN?1k?0??nk?H??NT?WN,?s??k?(n?0,1,?,N?1)。
用FFT实现DFT:先设序列点数为N=2M,M为整数。如果不满足这个条件,可以人为地加上若干零值点,使之达到这一要求。这种N为2的整数幂的FFT称基2 FFT。设输入序列长度为N=2M (M为正整数) ,将该序列按时间顺序的奇偶分解为越来越短的子序列,称为按时间抽取(DIT )的FFT算法。下面给出8点基 2 FFT的运算流图:
图1-1
下面对两种变化的运算量进行比较。设x(n)为N项的复数序列,由DFT变换,任一X(m)的计算都需要N次复数乘法和N-1次复数加法,而一次复数乘法等于四次实数乘法和两次实数加法,一次复数加法等于两次实数加法,即使把一次复数乘法和一次复数加法定义成一次“运算”(四次实数乘法和四次实数
2
加法),那么求出N项复数序列的X(m),即N点DFT变换大约就需要N次运算。当N=1024点甚至更多的
2
时候,需要N=1048576次运算,在FFT中,利用WN的周期性和对称性,把一个N项序列(设N=2k,k为正
2
整数),分为两个N/2项的子序列,每个N/2点DFT变换需要(N/2)次运算,再用N次运算把两个N/2
22
点的DFT变换组合成一个N点的DFT变换。这样变换以后,总的运算次数就变成2*(N/2)=N/2。继续上面的例子,N=1024时,总的运算次数就变成了525312次,节省了大约50%的运算量。而如果我们将这种“一分为二”的思想不断进行下去,直到分成两两一组的DFT运算单元,那么N点的DFT变换就只需要Nlog2N次的运算,N在1024点时,运算量仅有10240次,是先前的直接算法的1%,点数越多,运算量的节约就越大,这就是FFT的优越性。
2. DFT与FFT等价性验证
第 2 页 共 10 页
如上面论述的,FFT只是DFT的快速实现算法,它仍是以DFT为理论基础的,因此他们两者完全等价。这里将在VC6.0下编制DFT与FFT 的程序,用其对两组离散序列进行变化,并输出变换结果。
矩形脉冲信号,序列长64,其中前16点为1,其余为0。其DFT与FFT前5点输出如下图:
图2-1
正弦脉冲信号,序列长61,数字角频率为PI/2。其DFT与FFT前5点输出如下图:
图2-2
比较可以发现用DFT和FFT对同一序列变化得到的结果是完全一样的。这说明DFT与FFT是完全等价的,而区别仅在于其具体算法。
3. DFT与FFT运算速度比较
如上面介绍的,N点DFT需进行N次运算,而N(N=2)点FFT只需要Nlog2N次运算。因此DFT的运算时间与FFT的运算时间比应为:N/log2N。这里将对上述结论在数量级层次进行验证。
为了严谨,这里先验证DFT与FFT运算时间仅与N有关,而与具体信号类型无关。这里分别对128点、256点、512点矩形脉冲信号和正弦脉冲信号进行DFT与FFT变换,运算时间如图:
2
M
图3-1
图3-2
图3-3
可以看出,对不同类型信号进行DFT与FFT变换,只要其点数相同,其运算时间也是大致相同的。考虑到C程序计时并不如汇编等机器语言准确,且100次重复计算会对每次运算时间之差进行累加,上面3次试验反映出的时间差是可以忽略的。由此可见,DFT与FFT运算时间仅与运算点数N有关,而与具体信
第 3 页 共 10 页
号类型无关。
当信号点数较多时,对不同类型信号进行DFT与FFT变化将花费大量时间,而上面已经验证DFT与FFT运算时间仅与N有关,而与具体信号类型无关。故下面将仅对同一类型不同点数信号的DFT与FFT的运算时间的比较,而这也具有一般代表性。
下面将仅对不同点数正弦信号做DFT与FFT变化,并进行运算时间比较。由于C程序中计时受机器滴
2
答时间限制,故对点数较小信号进行较多次数DFT与FFT变换。而当点数较多时,DFT运算时间将按N规律增长,故对点数较多信号进行较少次数DFT与FFT变换。各次DFT与FFT运算时间如下诸图:
图3-4
图3-5
图3-6
图3-7
图3-8
图3-9
图3-10
图3-11
第 4 页 共 10 页
图3-12
图3-13
图3-14
图3-15
图3-16
图3-17
+n
下面对以上数据进行整理分析。 (注:e+n表示*10) N 变换次数 TDFT/s TFFT/s mean(TDFT)/s mean(TFFT)/s TDFT/TFFT 理论比值 2 10000 0.032 0.031 3.2e-6 3.1e-6 1.03 2 4 10000 0.156 0.063 1.56e-5 6.3e-6 2.48 2 8 1000 0.062 0.016 6.2e-5 1.6e-5 3.875 2.67 16 1000 0.25 0.047 2.5e-4 4.7e-5 5.32 4 32 1000 1.016 0.109 1.016e-3 1.09e-4 9.32 6.4 64 100 0.406 0.016 4.06e-3 1.6e-4 25.38 10.67 128 100 1.703 0.063 1.703e-2 6.3e-4 27.03 18.29 256 100 6.609 0.141 6.609e-2 1.41e-3 46.87 32 512 100 26.218 0.313 2.6218e-1 3.13e-3 83.76 56.89 1024 10 10.531 0.063 1.0531 6.3e-3 167.16 102.4 2048 10 42.172 0.156 4.2172 1.56e-2 270.33 186.18 4096 10 167.047 0.344 1.67047e+1 3.44e-2 485.60 341.33 8192 1 67.141 0.078 6.7141e+1 7.8e-2 860.78 630.15 16384 1 267.485 0.156 2.67485e+2 1.56e-1 1714.65 1170.29 表3-1 在Matlab中对以上数据绘图如下:
第 5 页 共 10 页
正在阅读:
关于DFT与FFT运算速度的比较01-01
手机CID是什么意思02-09
小学寒假日记200字共计8篇02-21
2022—2022年兴义地区重点中学高考一轮复习教学案——平面向量及04-08
2012-2013学年六年级英语下学期期中检测试题(配牛津版)无答案-03-10
夸夸我的同学作文300字02-04
2017-2022年中国肥料制造行业发展现状分析及投资方法研究报告(05-25
九年级物理功与能专题练习(附答案)03-24
工作时间长辞职报告02-25
主题班会设计:节约是美德12-22
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 运算
- 速度
- 比较
- 关于
- DFT
- FFT
- 大学物理电子教案之第7章稳恒磁场 - 图文
- 浅谈增值税抵扣凭证存在问题及解决方法
- 东川某隔震结构设计
- ZOOM505II说明书
- 怎么检测WinCC与PLC的通信状态
- 关于互联网金融的发展趋势与特征
- 初中思想品德课中的多媒体技术运用-精选教育文档
- 重庆市某高层住宅小区沉降观测专项方案
- 计算机基础测验二(附答案)
- 数控铣(加工中心)操作与编程
- 高一历史下册国民经济的恢复和初步发展 同步练习1
- 关于关爱随班就读,残疾儿童少年的,工作方案
- 苏果超市物流中心选址与布局规划(更好)
- 第四单元教学反思
- 研修心语
- 学生会的部长申请书
- 2017-2022年中国液压、气压动力机械及元件制造行业运营态势与投资前景预测分析报告 - 图文
- 基督教追思会主持词三篇
- 学生选课系统(UML)
- 2019年河南成人继续教育报名,报名入口,网上报名入口(报考必看)