快速傅里叶变换fft的c语言算法彻底研究 pdf,详解快速傅里叶变换FFT算法.pdf

详解快速傅里叶变换FFT 算法

快速傅里叶变换FFT 是离散傅里叶变换DFT 的一种快速算法,只有FFT 才能在现实中有实际应

用的意义。虽然许多学过数字信号处理这门课的同学都知道 DFT 和 FFT,但实际上真正理解其算法

原理的屈指可数,绝大部分同学知其然而不知其所以然,况且限于高校课程教学体制,课堂上不可

能把这些原理和算法讲得明明白白的。为此,特意以本文讲解FFT 算法的原理与实际应用,给欲往

电子信息类专业进修和发展的同学一些课外参考。

N 点有限长序列x(n)的DFT 为

N 1 2

nk 其中 nk j N nk

X (k ) x (n ) W W e

N N

n 0

其逆变换IDFT 为

1 N 1 nk

x(n) X(k) W

N

N n 0

正逆变换的运算量都是相同的。x(n)和X (k)都是复数序列,计算一个X(k)值,需要N 次复数

乘法和N-1 次复数加法。X(k)有N 个点,所以总共需要N*N 次复数乘法和N(N-1)次复数加法。复数

运算实际上是通过实数运算来完成的。上式可以写成:

N 1

 nk   nk 

X (k ) Re x (n )  j Im x (n ) Re W  j Im W

      N   N 

n 0

N 1

 nk   nk   nk   nk 

Re x(n) Re W Im x(n) Im W  j Re x(n) Im W Im x(n) Re W

    N     N      N     N 

n 0

由此可见,一次复数乘法需要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 的系数的固有特性来简化计算,减少运算量。特性如下:

1. 共轭对称性:(Wnk )* Wnk

N N

2. 周期性: Wnk W(nN )k Wn(k N )

N N N

3. 可约性: Wnk Wnmk Wnk / m

N N N /m

得出:

Wn(N k ) W(N n)k Wnk WN

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值