dsp第4章快速傅里叶变换(FFT)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
X1(1 )
X(1 )
x(2 )
N/4点
X4(0 )
W
0 N
2
X1(2 )
X(2 )
x(6 )
DFT
X4(1 )
W
1 N
2
X1(3 )
X(3 )
x(பைடு நூலகம் )
N/4点
X2(0 )
W
0 N
X(4 )
x(5 )
DFT
X2(1 )
W
1 N
X(5 )
x(3 )
N/4点
x(7 )
DFT
W
0 N
2
W
1 N
2
X2(2 )
W
2 N
X2(3 )
W
3 N
X(6 ) X(7 )
图4.2.3 N点DFT的第二次时域抽取分解图(N=8)
第4章 快速傅里叶变换(FFT)
A(0 ) x(0 )
A(1 )
x(4 )
A(2 )
W
0 N
x(2 )
A(3 )
x(6 )
A(4 )
W
0 N
x(1 )
A(5 )
x(5 )
A(6 )
W
0 N
x(3 )
长的子序列x3(l)和x4(l),即
x3 (l ) x4 (l )
x2 x1
(2l (2l
)
1)
,
l
0,1, ,
N 4
1
那么,X1(k)又可表示为
N / 41
N / 41
X1(k)
x1(2l
)WN2
kl /2
x1(2l
1)WNk
(2l 1) /2
i0
i0
N / 41
N / 41
A(0 ) A(1 ) A(2 ) A(3 ) A(4 ) A(5 ) A(6 ) A(7 ) x(0 ) x(4 ) x(2 ) x(6 ) x(1 ) x(5 ) x(3 ) x(7 )
图4.2.8 倒序规律
LH N 2 J LH N1 N 2
第4章 快速傅里叶变换(FFT)
4.2 基2FFT算法
4.2.1 直接计算DFT的特点及减少运算量的基本途径 长度为N的有限长序列x(n)的DFT为
N 1
X (k) x(n)WNkn, k 0,1,, N 1
n0
(4.2.1)
考虑x(n)为复数序列的一般情况,对某一个k值,
直接按(4.2.1)式计算X(k)值需要N次复数乘法、(N-1)次
开始 送 入x(n),M
N= 2M 倒序 L= 1 M, B 2 L- 1 J= 0 B, - 1 P= 2M -LJ k = J , N- 1 , L2 X (k) X (k) X (k B)WNp X (k B) X (k) X (k B)WNp
输出 结束
5. 序列的倒序
第4章 快速傅里叶变换(FFT)
i0
N / 41
X 6(k)
x6 (l)WNkl/ 4 DFT [x6(l)]
i0
x5 (l ) x6 (l )
x2 (2l ) x2(2l
1)
,
l
0,1, N
/
4
1
(4.2.11)
第4章 快速傅里叶变换(FFT)
x(0 )
N/4点 X3(0 )
X1(0 )
X(0 )
x(4 )
DFT X3(1 )
n
n
N / 21
N / 21
x(2r)WN2kr
x(2r 1)WNk (2r1)
r0
r0
N / 21
N / 21
x1(r) WNk
x2 (r)WN2kr
由于
r0
r0
W 2kr N
j 2 2kr
eN
j
2 N
kr
e 2
W 2kr N /2
所以
N / 21
N / 21
X (k)
x1(r)WNkr/ 2 WNk
X (J) XL-1(J)+X L-1(J+B)WpN XL(J+B) XL-1(J)-X L-1(J+B)WpN
式中 p=J·2 M-L;J=0,1,…,2 L-1-1;L=1,2,…,M
第4章 快速傅里叶变换(FFT)
下标L表示第L级运算,XL(J)则表示第L级运算后 数组元素X(J)的值。如果要用实数运算完成上述蝶形 运算,可按下面的算法进行。
x4(k)
x4 (l)WNkl/ 4 DFT [x4 (l)]
i0
同理,由X3(k)和X4(k)的周期性和Wm N/2的对称
性 Wk+N/4 N/2=-Wk N/2 最后得到:
X X
1 1
(k (k
) X3(k N / 4)
) WNk / 2 X 4 (k ) X 3(k ) WNk /
X2(0 )
W
0 N
X(4 )
x(3 )
N/2点
X2(1 )
W
1 N
X(5 )
x(5 )
DFT
X2(2 )
W
2 N
X(6 )
x(7 )
X2(3 )
W
3 N
X(7 )
图4.2.2 N点DFT的一次时域抽取分解图(N=8)
第4章 快速傅里叶变换(FFT)
与第一次分解相同,将x1(r)按奇偶分解成两个N/4
第4章 快速傅里叶变换(FFT)
观察图4.2.4不难发现,第L级共有2 L-1个不同的旋 转因子。N=23=8时的各级旋转因子表示如下:
L=1时,WpN=WJ N/4=WJ2L, J=0 L=2时, WpN =WJ N/2=WJ2L, J=0,1 L=3时, WpN =WJN=WJ2L, J=0,1,2,3 对N=2M的一般情况,第L级的旋转因子为
复数加法。
第4章 快速傅里叶变换(FFT)
如前所述,N点DFT的复乘次数等于N2。显然,
把N点DFT分解为几个较短的DFT,可使乘法次数大大
减少。另外,旋转因子WmN具有明显的周期性和对称 性。其周期性表现为
W mlN N
j 2 (mlN )
e N
j 2 m
e N
WNm
(4.2.2)
其对称性表现为
CM (2)
N 2
M
N 2
log2
N
复数加次数为
CA(2) N M N log2 N 例如,N=210=1024时
N2
1048576 204.8
(N / 2) log2 N 5120
第4章 快速傅里叶变换(FFT) 图4.2.5 FFT算法与直接计算DFT所需乘法次数的比较曲线
第4章 快速傅里叶变换(FFT)
设序列x(n)的长度为N,且满足
N 2M , M 为自然数
按n的奇偶把x(n)分解为两个N/2点的子序列
x1(r) x(2r),
r 0,1, N 1 2
x2(r) x(2r 1),
r 0,1, N 1 2
第4章 快速傅里叶变换(FFT)
则x(n)的DFT为
X (k ) x(n)WNkn x(n)WNkn
4.2.4 DIT―FFT的运算规律及编程思想 1.原位计算 由图4.2.4可以看出,DIT―FFT的运算过程很有规
律。N=2M点的FFT共进行M级运算,每级由N/2个蝶 形运算组成。
2.旋转因子的变化规律 如上所述,N点DIT―FFT运算流图中,每级都有 N/2个蝶形。每个蝶形都要乘以因子WpN,称其为旋转 因子,p称为旋转因子的指数。
A(0 ) X(0 ) X(1 ) X(2 ) X(3 ) X(4 ) X(5 ) X(6 )
A(7 ) X(7 )
第4章 快速傅里叶变换(FFT)
4.2.3 DIT―FFT算法与直接计算DFT运算量的比较
每一级运算都需要N/2次复数乘和N次复数加(每个 蝶形需要两次复数加法)。所以,M级运算总共需要的 复数乘次数为
设
T=X L-1(J+B)WpN=TR+jTI
X L-1(J)=X′R(J)+jX′I(J)
式中下标R表示取实部,I表示取虚部,
TR
X R (J
B) cos 2
N
p X R (J
B)
I
sin
2
N
p
TI
X I (J
B) cos 2
N
p X R (J
B)
I
sin
2
N
p
第4章 快速傅里叶变换(FFT)
x2 (r)WNkr/ 2 DFT [x2 (r)]
r0
(4.2.6)
由于X1(k)和X2(k)均以N/2为周期,且
kN
WN 2
WNk
,所以X(k)又可表示为
X (k) X1(k) WNk X 2(k)
k 0,1, N 1 2
X (k
N 2
)
X1(k)
WNk
X 2 (k )
k 0,1, N 1 2
x3(l )WNkl/ 4 WNk / 2
x4 (l )WNkl/ 4
i0
i0
x3(k ) WNk /2 X 4 (k ), k 0,1, N / 2 1
(4.2.9)
第4章 快速傅里叶变换(FFT)
式中
N / 41
x3(k)
x3(l)WNkl/ 4 DFT [x3(l)]
i0
N / 41
A(7 )
x(7 )
W
0 N
A(0 )
A(1 )
A(2 )
W
0 N
A(3 )
W
2 N
A(4 )
A(5 )
A(6 )
W
0 N
A(7 )
W
2 N
A(0 )
A(1 )
A(2 )
A(3 )
A(4 )
W
0 N
A(5 )
W
1 N
A(6 )
W
2 N
A(7 )
W
3 N
图4.2.4 N点DIT―FFT运算流图(N=8)
x2 (r)WNkr/ 2 X1(k ) WNk X 2 (k )
r0
r0
第4章 快速傅里叶变换(FFT)
其中X1(k)和X2(k)分别为x1(r)和x2(r)的N/2点DFT,
即 N / 21
X1(k)
x1(r)WNkr/ 2 DFT [x1(r)]
r0
(4.2.5)
N / 21
X 2(k)
2
X
4
(k
)
,
k
0,1, ,
N
/
4
1
(4.2.10)
第4章 快速傅里叶变换(FFT)
用同样的方法可计算出
X X
2 2
(k (k
) X5(k N / 4)
) WNk X5k
/2
X 6 (k Wk
N /2
) X
6
(k
)
,
k
0,1, N
/
4
1
其中
N / 41
X5(k)
x5(l)WNkl/ 4 DFT [x5(l)]
WNp W2J L, J 0,1, 2, , 2L1 1 2L 2M 2LM N 2LM
WNP
WJ N g2LM
WNJ g2M L , J
0,1, 2, , 2L1 1
(4.2.12)
p J g2M L
(4.2.13)
第4章 快速傅里叶变换(FFT)
3. 蝶形运算规律 设序列x(n)经时域抽选(倒序)后,存入数组X中。 如果蝶形运算的两个输入数据相距B个点,应用原位计 算,则蝶形运算可表示成如下形式:
XL(J ) XR(J ) j(J )
则
X R (J ) X R (J ) TR
X I (J ) X I(J ) TI
X R (J B) X R (J ) TR
X I (J B) X I(J ) TI
4. 编程思想及程序框图
图4.2.6 DIT―FFT运算和程序框图
第4章 快速傅里叶变换(FFT)
001 1 101 5 011 3 111 7
图4.2.7 形成倒序的树状图(N=23)
第4章 快速傅里叶变换(FFT) 表4.2.1 顺序和倒序二进制数对照表
第4章 快速傅里叶变换(FFT)
x(0 ) x(1 ) x(2 ) x(3 ) x(4 ) x(5 ) x(6 ) x(7 ) A(0 ) A(1 ) A(2 ) A(3 ) A(4 ) A(5 ) A(6 ) A(7 )
WNm WNN m 或者 [WNN m ] WNm
m N
WN 2
WNm
第4章 快速傅里叶变换(FFT)
4.2.2 时域抽取法基2FFT基本原理 FFT 算 法 基 本 上 分 为 两 大 类 : 时 域 抽 取 法
FFT(Decimation In Time FFT,简称DIT-FFT)和频域抽取 法FFT(Decimation In Frequency FFT,简称DIF―FFT)。 下面先介绍DIF―FFT算法。
DIT―FFT算法的输入序列的排序看起来似乎很乱, 但仔细分析就会发现这种倒序是很有规律的。由于
N=2M , 所 以 顺 序 数 可 用 M 位 二 进 制 数 (nM-1nM-2…n1n0) 表示。
0 0
1 0
0 1
1
000 0 100 4 010 2 110 6
0 0
1 1
0 1
1
(n2n1n0)2
(4.2.7) (4.2.8)
第4章 快速傅里叶变换(FFT)
A
A+ BC
C B
A- BC
图4.2.1 蝶形运算符号
第4章 快速傅里叶变换(FFT)
x(0 )
X1(0 )
X(0 )
x(2 )
N/2点 X1(1 )
X(1 )
x(4 )
X1(2 )
X(2 )
DFT
x(6 )
X1(3 )
X(3 )
x(1 )
第4章 快速傅里叶变换(FFT)
第4章 快速傅里叶变换(FFT)
4.1 引言 4.2 基2FFT算法 4.3 进一步减少运算量的措施 4.4 分裂基FFT算法 4.5 离散哈特莱变换(DHT)
第4章 快速傅里叶变换(FFT)
4.1 引言
DFT是信号分析与处理中的一种重要变换。因直 接计算DFT的计算量与变换区间长度N的平方成正比, 当N较大时,计算量太大,所以在快速傅里叶变换(简 称FFT)出现以前,直接用DFT算法进行谱分析和信号 的实时处理是不切实际的。直到1965年发现了DFT的 一种快速算法以后,情况才发生了根本的变化。