数字信号处理 8快速傅里叶变换(FFT).
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
形运算构成。由于一个N点DFT运算量为N2次乘法和N(N-1)
次加法;而一个蝶形运算包括1次乘法和2次加法,所以
一次 分解后 的运算量
乘法
N
2
2
N2
2个
N 2
点DFT 2
加法
N 2
N 2
2
1 2= N 2
2
N
N 2
个蝶形运算加 乘法 法12 N2N2
=N
乘法次数N2/2+N/2,
当k取奇数(k=2r+1,r=0,1,…,N/2-1)时
N / 21
X (2r 1)
n0
[x(n)
x(n
N 2
)]WNn ( 2 r 1)
N / 21
n0
[x(n)
x(n
N 2
)]WNn
W nr N /2
(4-129)
令
x1
n
xn
x n
N 2
x
2
n
xn
x n
N 2
W
n N
(4-130)
W kN / 2 N
(1)k
1, 1
k 偶数 k 奇数
将X(k)分解成偶数组与奇数组,当k取偶数
(k=2r,r=0,1,…,N/2-1)时
N / 21
X (2r)
n0
[x(n)
x(n
N 2
)]WN2rn
N / 21
n0
[x(n)
x(n
N 2
)]WN2r/n2
(4-128)
快速傅里叶变换(FFT)
W
2 N
x2(2 ) DFT
X(5 )X2(2),r=2
x(7 )
W
3 N
x2(3 )
X(7 )X2(3),r=3
k为奇数(k=2r+1),X2(r)=X(2r+1) 图4-32 DIF―FFT一次分解运算流图(N=8)
快速傅里叶变换(FFT)
x(0 )
N/4点
X(0 )
x(1 )
DFT
X(4 )
k 0,1, N 1 2
(4-115) (4-116)
快速傅里叶变换(FFT)
由上分析可见,只要求出 0~N/2-1之间的X1(k)和X2(k),即可按 (4-115)和(4-116)求得0~N-1区间内所有X(k)。
X (k) X1(k) WNk X 2(k)
k 0,1, N 1 2
X
(k
N 1
X (k) DFT[x(n)] x(n)WNk
n0
N / 21
N 1
x(n)WNkn
x(n)WNkn
n0
nN /2
N / 21
n0
N / 21
x(n)WNkn
n0
x(n
N 2
)WNk (nN
/ 2)
N / 21
n0
[x(n)
WNkN / 2 x(n
N 2
)]WNkn
快速傅里叶变换(FFT)
快速傅里叶变换(FFT)
4.3.4 离散傅立叶变换的快速算法FFT
DFT是信号分析与处理中的一种重要变换。因直 接计算DFT的计算量与变换区间长度N的平方成正比, 当N较大时,计算量太大,所以在快速傅里叶变换(简 称FFT)出现以前,直接用DFT算法进行谱分析和信号 的实时处理是不切实际的。直到1965年发现了DFT的 一种快速算法以后,情况才发生了根本的变化。
x2 (r)WNkr/ 2 X1(k ) WNk X 2 (k )
r0
r0
k=0,1,2…,N-1
快速傅里叶变换(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-113)
N / 21
A(7 ) X(7 )
快速傅里叶变换(FFT)
3 DIT―FFT算法与直接计算DFT运算量的比较
每一级运算都需要N/2次复数乘和N次复数加(每个 蝶形需要两次复数加法)。所以,M级运算总共需要的 复数乘次数为
CM (2)
N 2
M
N 2
log2
N
复数加次数为
CA(2) N M N log2 N 例如,N=210=1024时
图4.3.13 N点DFT的第二次时域抽取分解图(N=8)
快速傅里叶变换(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 )
A(7 )
x(7 )
W
0 N
A(0 )
A(1 )
A(2 )
X 2(k)
x2 (r)WNkr/ 2 DFT [x2 (r)]
r0
(4-114)
由于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 )
设序列x(n)的长度为N,且满足
N 2M , M 为自然数
按n的奇偶把x(n)分解为两个N/2点的子序列
n为偶数组 x1(r) x(2r),
r 0,1, N 1 2
n为奇数组 x2(r) x(2r 1),
r 0,1, N 1 2
快速傅里叶变换(FFT)
则x(n)的DFT为
N 1
N 1
X k DFT xn xnWNnk x n WNnk
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.3.14 N点DIT―FFT运算流图(N=8)
A(0 ) X(0 ) X(1 ) X(2 ) X(3 ) X(4 ) X(5 ) X(6 )
快速傅里叶变换(FFT)
1 直接计算DFT的特点及减少运算量的基本途径
长度为N的有限长序列x(n)的N点DFT为
N 1
X (k) x(n)WNkn, k 0,1,, N 1
n0
(4-109)
考虑x(n)为复数序列的一般情况,对某一个k值,直 接按(4-109)式计算X(k)值需要N次复数乘法、(N-1)次 复数加法。而k的取值从0到N-1,为N个取值,所以
直接计算N点DFT的运算量为N2次复乘,N(N-1)次复加, 即N点DFT乘法与加法次数均与N2成正比。
快速傅里叶变换(FFT)
显然,把N点DFT分解为几个较短的DFT,可使乘 法次数大大减少。另外,旋转因子WmN具有明显的周 期性和对称性。其周期性表现为
W mlN N
j 2 (mlN )
e N
X 3 k WNk 2 X 4 k
快速傅里叶变换(FFT)
X1(k ) X 3 (k ) WNk/ 2 X 4 (k )
式中
N 41
X3 k
x3
l
W lk N4
DFT[x3
l]
l0
N 41
X 4 k
x4
l
W lk N4
DFT[x4
l]
l0
同理,由X3(k)和X4(k)的周期性和Wk+N/4 N/2=-Wk N/2 最 后得到:
则
X
(2r)
N / 21 n0
x1(n)WNrn/ 2
N / 21
X (2r 1)
n0
x2 (n)WNrn/ 2
(4-131)
快速傅里叶变换(FFT) 图4-31 DIF―FFT蝶形运算流图符号
快速傅里叶变换(FFT)
k为偶数(k=2r),X1(r)=X(0
N 2
)
X1(k)
WNk
X 2 (k )
k 0,1, N 1 2
A
A+ BC
C B
图4-22 蝶形运算符号
A- BC
快速傅里叶变换(FFT)
x1(r)=x(2r),n为偶数
r=0, x1(0) x(0 )
X1(0 )
X(0 )
r=1, x1(1) x(2 )
N/2点 X1(1 )
X(1 )
r=2, x1(2) x(4 )
j 2 m
e N
WNm
其对称性表现为
WNm WNN m 或者 [WNN m ] WNm
m N
WN 2
WNm
快速傅里叶变换(FFT)
2 时域抽取法基2FFT基本原理 FFT 算 法 基 本 上 分 为 两 大 类 : 时 域 抽 取 法
FFT(Decimation In Time FFT,简称DIT-FFT)和频域抽取 法FFT(Decimation In Frequency FFT,简称DIF―FFT)。 下面先介绍DIT―FFT算法。
1
N 21
那么,X1(k)又可表示为 X1 k
x1
r
W rk N2
DFT[x1 r ]
r0
N 1
N 1
4
X1 k
4
x1
2l
W 2lk N2
x1
2l
1
W 2l1k N2
l0
l0
N 1
N 1
4
4
x3
l
W lk N4
WNk
2
x4
l
W lk N4
l0
l0
(4-117)
/
4
1
快速傅里叶变换(FFT)
r为偶数,r=2l,x3(l)=x1(2l)
r=0,l=0 x(0)
X3(0 ) N/4点
X1(0 )
X(0 )
r=2,l=1 x(4)
DFT X3(1 )
X1(1 )
X(1 )
r=1,l=0 x(2)
N/4点
X4(0 )
W
0 N
2
X1(2 )
X(2 )
r=3,l=1 x(6)
DFT X4(1 )
r为奇数,r=2l+1,x4(l)=x1(2l+1)
W
1 N
2
x(1 )
N/4点
X1(3 )
X2(0 )
W
0 N
X(3 ) 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 )
x(1 )
x1(1 ) N/2点
X(2 )X1(1),r=1
x(2 )
x1(2 ) DFT
X(4 )X1(2),r=2
x(3 )
x1(3 )
X(6 )X1(3),r=3
x(4 )
W
0 N
x2(0 )
X(1 )X2(0),r=0
x(5 )
W
1 N
x2(1 ) N/2点
X(3 )X2(1),r=1
x(6 )
X1(2 ) DFT
X(2 )
r=3, x1(3) x(6 )
X1(3 )
X(3 )
r=0, x2(0) x(1 )
X2(0 )
W
0 N
X(4 )
r=1, x2(1) x(3 )
N/2点
X2(1 )
W
1 N
X(5 )
r=2, x2(2) x(5 )
DFT
X2(2 )
W
2 N
X(6 )
r=3, x2(3) x(7 )
加法次数N2/2,比 直接计算较少了近
一半的计算量。
快速傅里叶变换(FFT)
继续分解,与第一次分解相同,将x1(r)按r的奇偶 分解成两个N/4长的子序列x3(l)和x4(l),即
r为偶数,r=2l r为奇数,r=2l+1
x3 (l ) x4 (l)
x1(2l) x1(2l
1),
l
0,1,. .., N 4
N /2
) X
6
(k
)
,
k
0,1, N
/
4
1
其中
N / 41
X5(k)
x5(l)WNkl/ 4 DFT [x5(l)]
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
N2
1048576 204.8
(N / 2) log2 N 5120
快速傅里叶变换(FFT)
5 频域抽取法FFT(DIF―FFT)
在基2快速算法中,频域抽取法FFT也是一种常用 的快速算法,简称DIF―FFT。
设序列x(n)长度为N=2M,首先将x(n)前后对半分
开,得到两个子序列,其DFT可表示为如下形式:
x(2 )
W
0 N
N/4点
X(2 )
x(3 )
W
2 N
DFT
X(6 )
x(4 )
W
0 N
N/4点
X(1 )
x(5 )
W
1 N
DFT
X(5 )
x(6 )
W
2 N
W
0 N
N/4点
X(3 )
x(7 )
W
3 N
W
2 N
DFT
X(7 )
图4-33 DIF―FFT二次分解运算流图(N=8)
X X
1 1
(k (k
) X3(k N / 4)
) WNk / 2 X 4 (k ) X 3(k ) WNk /
2
X
4
(k
)
,
k
0,1, ,
N
/
4
1
快速傅里叶变换(FFT)
用同样的方法可计算出
X X
2 2
(k (k
) X5(k N / 4)
) WNk X5k
/2
X 6 (k Wk
X2(3 )
W
3 N
X(7 )
x2(r)=x(2r+1),n为奇数 图4-23 N点DFT的一次时域抽取分解图(N=8)
快速傅里叶变换(FFT)
X (k) X1(k) WNk X 2(k)
k 0,1, N 1 2
X
(k
N 2
)
X1(k)
WNk
X 2 (k )