详解快速傅里叶变换FFT算法
详解快速傅里叶变换FFT算法
快速傅里叶变换FFT是离散傅里叶变换DFT的一种快速算法,只有FFT才能在现实中有实际应用的意义。虽然许多学过数字信号处理这门课的同学都知道DFT和FFT,但实际上真正理解其算法原理的屈指可数,绝大部分同学知其然而不知其所以然,况且限于高校课程教学体制,课堂上不可能把这些原理和算法讲得明明白白的。为此,特意以本文讲解FFT算法的原理与实际应用,给欲往电子信息类专业进修和发展的同学一些课外参考。
N点有限长序列x(n)的DFT为
X(k) x(n)W 其中W
nkN
n 0N 1
nkN
e
j
2 nkN
其逆变换IDFT为
1N 1 nk
x(n) X(k)WN
Nn 0
正逆变换的运算量都是相同的。x(n)和X(k)都是复数序列,计算一个X(k)值,需要N次复数乘法和N-1次复数加法。X(k)有N个点,所以总共需要N*N次复数乘法和N(N-1)次复数加法。复数运算实际上是通过实数运算来完成的。上式可以写成:
nknk
X(k) Re x(n) jIm x(n) Re WN jIm WN
n 0
N 1
nknknknk Re x(n) Re W Imx(n)ImW jRex(n)ImW Imx(n)ReW NNNN
n 0
N 1
由此可见,一次复数乘法需要4次实数乘法和2次实数加减法。一次复数加法需要2次实数加
法。所以每一个X(k)计算需要4N次实数乘法以及2N+2(N-1)=2(2N-1)次实数加法。整个DFT运算总共需要4N*N次实数乘法和N*2(2N-1)=2N(2N-1)次实数加法。当N足够大,N>>1时,直接计算DFT的乘法次数和加法次数都是和N的平方成正比。当N=1024时,DFT的运算量为1048576次,即一百多万次复乘运算,一块嵌入式32位处理器的最高速度为105百万指令每秒,那么它要完全计算这个DFT的时间最快也要1秒,期间还是独占CPU所有运算资源且不能有任何其他的中断请求。这样计算量太庞大,计算速递太慢了,谈不上实时性,根本没有实用意义。
所以,我们就要利用DFT的系数的固有特性来简化计算,减少运算量。特性如下:
nk nk
1. 共轭对称性:(WN )* WN
nk(n N)kn(k N)2. 周期性: WN WN WNnknmknk/m
WN WN3. 可约性: WN/m
得出:
(k N/2)kn(N k)(N n)k nk
WNWN WN WN WNN/2 1 WN
利用上述这些系数性质就可以合并DFT某些项的计算从而减少计算量。下面仅给出按时间抽选
你可能喜欢
- 算法的C语言实现
- 快速傅里叶变换原理
- 数字信号处理算法
- 数字信号处理课件
- 北京自考
- 自考科目
- 自考思想道德修养与法律基础
- 用C语言程实现树的遍历(算法)。分出先序,中序,后序3页
- 小波变换算法的C语言实现3页
- 第7章 常用基本算法的C语言实现16页
- 表排序算法的C语言实现2页
- 基于DSP的FIR滤波器的C语言算法实现8页
- 队列的建立与基本操作算法(C语言实现)6页
- 《数字信号处理——原理、实现及应用》第三章 离散傅里叶变换(DFT)及其快速算法(FFT)88页
- 快速傅里叶变换(FFT) 原理 介绍3页
- 快速傅里叶变换的原理与方法3页
- 快速傅里叶变换原理及其应用13页
- 快速傅里叶变换的原理与方法3页
- 《数字信号处理——原理、实现及应用》第三章_离散傅里叶变换(DFT)及其快速算法(FFT)88页
- 《数字信号处理——原理、实现及应用》第三章 离散傅里叶变换(DFT)及其快速算法(FFT)88页
- 数字信号处理算法课程设计11页
- 数字信号处理课程设计_快速傅里叶变换快速算法的软件实现实验_任务书1页
- 数字信号处理课设基于MATLAB的FFT算法的设计35页
- 一个基于数字信号处理的FDK算法的优化实施9页
- 实验三 FFT算法的应用 实验四 离散系统的变换域分析--华南理工大学--数字信号处理实验8页
- 数字信号处理课件第七章-325页
- 数字信号处理课件第七章-234页
- 数字信号处理课件-第七章-135页
- 数字信号处理第一章课件88页
- 基于MATLAB的_数字信号处理_动画课件工具箱设计5页
- 数字信号处理课件胡广书第7章102页
- 全国自考会计科目4页
- 法律自考科目2页
- 自考科目6页
- 自考专业科目行政管理14页
- 山东法律本科自考科目表2页
- 山东自考科目5页


