FFT原理

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

x1(2l 1) x4 (l )
x2 (2l ) x5 (l )
x2 (2l 1) x6 (l )
l 0,1,....
N 2
1
例:N=23=8 按时间抽取的DFT分解过程
由于N/2 仍是偶数,可以被2整除,因此可 以对两个N/2点的DFT再分别作进一步的分解。将
一个8点的DFT可以分解成四个2点的DFT,直到最
(1)蝶形运算
对于N=2M,总可以通过M次分解最后分解成2点
的DFT运算。这构成从 x(n)到X(k)的M级运算过程。
从上面流图可看到,每一级运算都由N/2个蝶形运 算构成。因此每一级运算都需要N/2次复乘和N次 复加,经过M级运算后总共需要的运算量为: 复乘:
N 2
复加:
M
N 2
log 2 N
j 2 nk N
w w
nk N
n ( N k ) N
w
nk N
k ( N n ) N
N wN / 2 1
w
n ( k N / 2) N
w
nk 我们利用系数 w N 的周期性和对称性,考察它 是如何简化DFT运算的过程。
以N=4为例, 4 的矩阵形式为: wnk
0 0 w4 w4 0 w4 w1 4 0 2 w4 w4 0 3 w4 w4 0 0 0 w4 w4 w4 2 3 周期性 0 w4 w4 w4 0 4 6 w4 w4 w4 0 6 9 w4 w4 w4 0 0 0 0 w4 w4 w 4 w 4 1 2 3 对称性 0 w4 w 4 w 4 w4 0 2 0 2 w4 w4 w4 w4 0 3 2 1 w4 w4 w4 w4 0 0 0 w4 w4 w 4 1 0 1 w4 w4 w 4 0 0 0 w4 w4 w4 1 0 1 w4 w4 w4
0 wN
0 wN 2 wN1
w11 N
2 w1( N 1) wN (N 1) N
x (0) (N 1) 1 x (1) wN (N 1)(N 1) wN x ( N 1)
(2)原位运算结构(同址运算)
FFT运算结构很有规律,它具有强烈的对称性, 它的所有运算都可以由左下图所示的基本运算构成。 由于运算结构规律,所以硬件实现起来简单,软件 编程方便。 FFT的蝶形运算结构很经济,它可以采用原位运 算。原位运算—— 指当数据输入到存储器中以后, 每一级运算的结果仍然储存在同 一组存储器中,直到最后输出, 中间无需其它任何存储器,称为 原位运算。
N 1
}
X(k)要进行4N次实数相乘和 2N+2(N-1)=2(2N-1)次实数相
加,因此,整个DFT运算需要4N2实数相乘和2N(2N-1)次实 数相加。
从上面的分析看到,在DFT计算中,不论是乘法 和加法,运算量均与N2成正比。因此,N较大时,运 算量十分可观。例:计算N=10点的DFT,需要100次复 数相乘,而N=1024点时,需要1048576(一百多万)
nk nk X (k ) { Re [ x(n)]Re wN I m [ x(n)]I m [ wN ] n 0
nk nk wN I m [ x(n)]Re wN e m 又因每个复数相加包括2个实数相加,所以,每计算一个
j R [ x(n)]I
按时间抽取的蝶形运算流图:
(3) X1 k 和 X 2 k 可以继续分解下去,可将N/2点的 子序列再按奇、偶项分解,一直到最后分解成 两两点的DFT为止。
四 个
N 4
点 DFT

偶序列中的偶序列
x1 (2l ) x3 (l )
偶序列中的奇序列
奇序列中的偶序列 奇序列中的奇序列
快速傅里叶变换(FFT)
快速傅里叶变换 (FFT)
快速傅里叶变换(FFT)是计算DFT的一种快速
高效的算法。
有限长序列在数字技术中占有很重要的地位
,主要原因是由于其频谱可以离散化。有限长序列
的DFT本身可以完全表达序列的频谱,所以DFT也可 以直接对信号进行频谱分析。 谱分析在通信技术、图象传输、语音压缩、 生物医学等领域都得到应用。

x2 (r ) W rk
N
x1 ( r )的 N
2点DFT
x2 ( r )的 N
2点DFT
k X 1 k WN X 2 k
X 显然,1 k 和 X 2 k 都只含有N/2点DFT, 所以X(k)
也只包含k=0,1,…,N/2-1点的DFT,还必须利用系数
nk wN 的周期性和对称性,求出X(k)的后N/2点的DFT。
k X (k ) X 1 k WN X 2 k N k X (k ) X 1 k WN X 2 k 2
k 0,1,
N 2
1
以上两个表达式说明:只要我们计算出N/2个点 的所有 X1 k 和 X 2 k 的值,就等于求出N点的X(k)值,
(2)求:X ( k N )=?
2
k =0,1,...,
rk
N
N
1
2
X 1 (k )
N / 21 r 0
x1(r ) W
令 k= k
N 2
2
X 1 (k
N 2
)
N / 2 1

r 0
x1(r ) w
r k N / 2 2
N

N / 2 1

r 0
x1(r ) wrk
0 wN
nk 一般x(n)和 wN 都是复数,X(k)也是复数,所以计算一 次DFT的运算量是:
计算一个X(k)值需: N次复数相乘和(N-1)次复数相加
计算N点X(k)值需: N 2 次复数相乘和 N(N-1)次复数相加 在这些运算中,乘法比加法运算复杂,尤其是复数相 乘,每个复数相乘包括4个实数相乘和2个实数相加,例:
N 1


N 2 偶数n 0
N / 2 1

nk x(n) wN
奇数n 1
nk x(n) wN
N 1

r 0
2 x(2r ) wNrk
2 j 2 rk N
N / 2 1

r 0
( x(2r 1) wN2 r 1) k
2 wNrk e
e
j
2
N
rk
这使得DFT的运算量减少了约一半。 上述两个公式的运算过程可用专用蝶形图表示:
图(a)需要两次乘法、两次加减法,将图(a)简化成图(b), 此时仅需一次乘法、两次加减法。
k X (k ) X 1 k WN X 2 k N k X (k ) X 1 k WN X 2 k 2
后得到两两点的DFT为止。
由于这种方法每一步分解都是按输入序列是属
于偶数还是奇数来抽取的,所以称为“按时间抽 取的FFT算法”。
第一级蝶形
第二级蝶形
第三级蝶形
N=8点按时间抽取的FFT运算流图
时间抽取法FFT的运算特点:
(1)蝶形运算
(2)原位运算结构 (3)码位倒置变换 (4)蝶形类型随迭代次数成倍增加
例如:输入数据A、B相应的存放在寄存器A(1)和 A(2)中,当进行完蝶形运算后,输出和存放在A(1) 中,输出差存放在A(2)中。下一级蝶形运算的输入 数据又分别存放在A(1)和A(2)中,而把前一级输出 的结果覆盖掉,直到最后输出,中间无需任何其它 存储器 。原位运算结构节省存储单元,可以降低设 备成本,还可节省寻址的时间。
次复数乘法,如果要求实时处理,则要求有很高的计
算速度才能完成上述计算量。反变换IDFT与DFT的运 算结构相同,只是多乘一个常数1/N,所以二者的计 算量相同。
二. DFT的运算特点 考察DFT的运算特点发现,利用以下两个特性可减
少运算量: 1)系数 wnk e 是一个周期函数,利用它的周 N 期性和对称性可改进运算,提高计算效率。 周期性 对称性
§6.1 DFT运算的特点:
一. DFT的运算量:
有限长序列x(n)进行一次DFT运算所需的运算量:
nk X (k ) DFT [ x(n)] x(n)wN
n 0 N 1
k 0,1, , N 1
0 X (0) wN X (1) 0 wN 0 X ( N 1) wN
N M N log2 N
而直接进行DFT运算时则与N2 成正比。
算法的运算速度
N2 直接DFT运算次数 G N N 2 log 2 FFT运算次数
例: N=2048,N2=4194304 , N log 2 N 11264 ,
N
2
2
N 2
372.4 log 2 N
显然,FFT要比直接DFT运算快得多。
N
2
X 1 (k )
同理:X 2 ( k
N 2
) X 2 (k )
再利用W系数的对称性:
WN
(k
N ) 2
k WN
X (k
N
2 2 可见,一个N点的DFT被分解为前后两个N/2点的DFT,
) X 1 k WN X 2 k
k
k 0,1,
N
1
这两个N/2点的DFT再合成为一个N点DFT。
结论:
nk 1) 利用系数 wN 的周期性和对称性可以提高DFT的
运算速度。上例中作一次DFT需 N2=16T的计算量正比于 N2 , N 小计算量也就小。 因此可以把长度为N点的大点数的DFT运算依次 分解为若干个小点数的DFT来运算。

FFT算法正是基于以上两点基本思想来提高DFT的
虽然频谱分析和DFT运算很重要,但在很长一 段时间里,由于DFT运算量太大,因此它并没有 得到真正的运用,频谱分析也大多采用模拟信号 滤波的方法解决。直到1965年美国IBM公司的库 利和图基这两位科学家首次提出DFT运算的一种 快速算法以后,情况才发生了根本变化,人们开 始认识到DFT运算的一些内在规律,从而很快地 发展和完善了一套高速有效的运算方法—快速付 里叶变换(FFT)算法。FFT的出现,使DFT的运算 大大简化,运算时间缩短1-2个数量级,FFT的问 世使得DFT在实际中得到广泛应用。
运算速度。FFT算法基本上可分为两大类: 按时间抽取FFT算法和按频率抽取FFT算法。
§6.2 按时间抽取的FFT
为了保证N点DFT的运算分解,首先假设N是2的整幂次方, 即 N=2M ,M是正整数。
一.算法原理
nk X (k ) DFT [ x(n)] x(n)wN
n 0 N 1
k 0,1, , N 1
2
(1)将序列 x(n) 按序号n的奇、偶分解为两个 N点子序列
偶数项组 x(2r ) x1 (r ) x(2r 1) x2 (r ) 奇数项组
r 0,1,...., 1
2
N
DFT运算也相应分为两组:
nk x(k ) DFT x(n) x(n) wN n 0
2
rk wN
2

N / 21

r 0
x (2r ) WNrk
2
N / 2 1

r 0
k x(2r 1) wN WNrk
2
故 : k X
N / 2 1
r 0 2

x1 (r ) W rk WNk
N
N / 2 1
r 0 2
nk X (k ) x(n) w4 DFT的矩阵运算
ab ba wN wN
nk 说明 x(n) w4 相乘中有重复运算。
k 0 k 1 k2 k 3
0 0 0 0 X 0)=x(0) w4 x(1) w4 x(2) w4 x(3) w4 ( 0 0 X (1)=x(0) w4 x(1) w1 x(2) w4 x(3) w1 4 4 0 0 0 0 X (2)=x(0) w4 x(1) w4 x(2) w4 x(3) w4 0 0 X (3)=x(0) w4 x(1) w1 x(2) w4 x(3) w1 4 4
相关文档
最新文档