第4章快速计算离散傅里叶变换

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
10242×50 ×10-6 +1023×1024×10×10-6=63(s)
2 Cooley和Tukey发明的方法计算DFT需:复乘 (N/2)log2N次,复加Nlog2N次。用来计算上面的DFT共 需多少时间?
512×10× 50 ×10-6 +1024×10×10×10-6=0.36(s)
第4章 快速傅里叶变换(FFT)
(4.2.9)
第4章 快速傅里叶变换(FFT)
(2)重组DFT,按DFT的定义重新组合变短的DFT。∵变 短后的DFT中X3(k)和X4(k)分别为x3(l)和x4(l)的N/4点DFT, 周期为N/22;∵对称性WN/2k+N/4 = -WN/2k。∴X1(k)也可 表示为
X1(k X1(k
) X3(k N / 4)
) WNk / 2 X 4 (k ) X 3(k ) WNk /
2
X
4
(k
)
,
k
0,1, ,
N
/
4
1
用同样的方法可以计算出
X 2 (k) X 5 (k) WNk 2 X 6 (k) , k有 N 4点 X 2 (k N / 4) X 5 (k) WNk 2 X 6 (k)
如果是8点的DFT,经两次分解,DFT的长度是多少?有 几个这种长度的DFT?
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 )
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 )
4. 倒序的意思
第4章 快速傅里叶变换(FFT)
因为DIT-FFT是对x(n)的序列按偶奇不断地分解,使 得N=2M的序号按2倍不断地变短;造成了在蝶形运算 时的输入信号排列顺序与原来的顺序不一样。
所以倒序就是从序号的2进制的低位向高位不断地把0 (代表偶数)和1(代表奇数)分开。
0 0
1 0
0 1
第4章 快速傅里叶变换(FFT)
例如,当N=8时,从形式上看,W8kn共有64个值。但 从图来看, Wkn实际上只有W0~W7这8个值是独立的;而 且,其中有一半是对称的。 科学家Cooley和Tukey正是 巧妙地利用这些特性加快了DFT的运算速度。
周期性:WNmlN WNm
对称性:WNm
N 2
512×10× 50 ×10-6 +1024×10×10×10-6=0.36(s) 它们的速度相差63÷0.36=175 (倍)!
第4章 快速傅里叶变换(FFT)
例如:分析序列x(n)=sin(1.8n)+cos(1.8n)的频谱。 clear,close all %用两种方法计算DFT n=0:1023;w=1.8; x=sin(w*n)+cos(w*n); subplot(2,1,1),stem(n,x,'.'); %axis([250,350,-1.5,1.5]) w=linspace(0,2*pi,1024); tic;X1=x*exp(-j*n'*w);toc;%时间约1.36秒,复加0.2微秒 tic;X2=fft(x);toc;%时间约0秒 subplot(2,1,2),plot(n,abs(X1),'.',n,abs(X2),'r'); %axis([250,350,0,800]);%算出角频率1.798弧度
第4章 快速傅里叶变换(FFT)
4.1 引言
与序列的傅里叶变换相比,离散傅里叶变换有实 用价值。但是按定义直接计算DFT有实用价值吗?只 有一些。因为这种算法的计算数度太慢了。特别是与 后人发明的算法相比,它的慢更显突出。
1965 年 , J. W. Cooley 和 J. W. Tukey 在 Mathematics of Computation上发表了An algorithm for the machine calculation of complex Fourier series。 它极大的提高了计算离散傅里叶变换的速度。
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
A(0 ) X(0 ) X(1 ) X(2 ) X(3 ) X(4 ) X(5 ) X(6 )
A(7 ) X(7 )
需要几次分解DFT,才会使DFT变为1点的DFT?
第4章 快速傅里叶变换(FFT)
1
000 0 100 4 010 2 110 6
0 0
1 1
0 1
1
(n2n1n0)2
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 )
4.2.3 时域抽取法快速傅里叶变换的运算量
从分解的级来看—— ①每级需复乘N/2次,?复加N次;? ②M=log2N级需复乘N/2×M次,?复加N×M次。? 对于复乘1次需50μs,复加1次需10μs的计算机,现在做
N=1024点的DFT运算。 按定义直接运算需要
10242×50 ×10-6 +1023×1024×10×10-6=63(s) 按DIT-FFT运算需要
r 0
r0
X1(k) WNk X 2 (k) , k有N点
第4章 快速傅里叶变换(FFT)
(2) 重组DFT,按DFT的定义重新组合变短的DFT。∵变
短 后 的 DFT 中 X1(k) 和 X2(k) 分 别 为 x1(r) 和 x2(r) 的 N/2 点 DFT,周期为N/2;∵对称性WNk+N/2 = -WNk。∴X(k)又 可表示为
WNm
0
第4章 快速傅里叶变换(FFT)
4.2.2 时域抽取法基2FFT基本原理
设序列x(n)的长度N=2M,M为自然数。
(1) 缩短DFT,把x(n)按n的奇偶顺序分成两半。
x1(r) x(2r),
r 0,1, N 1 2
x2 (r) x(2r 1),
r 0,1, N 1 2
X (k) X1(k) WNk X 2(k)
k 0,1, N 1 2
(4.2.7)
X
(k
N 2
)
X1(k)
WNk
X 2 (k )
k 0,1, N 1 2
(4.2.8)
经 过 这 两 步 骤 处 理 后 , 1 个 N 点 的 DFT 就 变 成 了 2 个 N/2点的DFT。运算量变成: 复乘(N/2)2×2+(N/2)≈N2/2次, 复加(N/2) ×(N/2-1) ×2 +(N/2) × 2=N2/2次。 比原来多了还是少了?
则x1(r)的DFT为
l
0,1,...,
N 22
1
N 41
N 41
X1(k)
x1
(2l
)WN2
kl 2
x1(2l
1)WNk
(2l 1) 2
l 0
l 0
N 41
N 41
x3 (l)WNkl4 WNk 2 x4 (l)WNkl4
l 0
l 0
X 3(k) WNk 2 X 4 (k) , k有 N 2点
W
3 N
X(7 )
图4.2.2 8点DFT的一次时域抽取分解图
2次分解x(n)的DFT:
第4章 快速傅里叶变换(FFT)
(1) 缩短x1(r)和x2(r)的DFT,与第一次分解相同,将x1(r) 按奇偶分解成两个N/22长的子序列x3(l)和x4(l),即
x3 (l) x1(2l) x4 (l) x1(2l 1) ,
第4章 快速傅里叶变换(FFT)
4.2.4 DIT―FFT的运算规律及编程思想
1. 运算规律
原位计算——从蝶形来看这种运算的好处;
有M级——从每次分解DFT次数和DFT变短的规律来看;
ቤተ መጻሕፍቲ ባይዱ
旋转因子
WJ 2L
,L指第几级,J是序号,从后往前看;
各级蝶形的点距 20 ~ 2M 1 ,从后往前看。
第4章 快速傅里叶变换(FFT)
第4章 快速傅里叶变换(FFT)
x(0 )
N/4点 X3(0 )
X1(0 )
X(0 )
x(4 )
DFT X3(1 )
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(1 )
N/4点
X2(0 )
W
0 N
则x(n)的DFT为
N 21
N 21
X (k)
x(2r)WN2kr x(2r 1)WNk (2r1)
r0
r 0
N 21
N 21
x1(r)WN2kr WNk x2 (r)WN2kr ,
WN2kr
j 2
(e N
)2kr
r 0
r 0
N 21
N 21
x1(r)WNkr2 WNk x2 (r)WNkr2
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
I= 1 N, 1
Y I≥ J
N T X (I) A(I ) X (J ) A(J ) T
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 8点DFT的第二次时域抽取分解图
第4章 快速傅里叶变换(FFT)
3次分解DFT,… ,长度为N/23,…
8点DIT―FFT运算流图
4.2 基2(radix2)FFT算法
4.2.1 直接计算DFT的特点及减少运算量的方法 直接计算N个采样值的DFT 需要有N2次复数乘法和 N(N-1)次复数加法。 如果把N分成几小段,降低DFT的规模,是不是可以大 幅度地减少乘法和加法的运算次数? 还有,WNkn具有对称性和周期性,是不是可以巧妙地 利用?
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 )
W
0 N
A(3 )
W
2 N
A(4 )
A(5 )
A(6 )
W
0 N
A(7 )
W
第4章 快速傅里叶变换(FFT)
开始 送 入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
输出 结束
2. 编程思想
循环1——
一级一级地计算蝶形,给出每个蝶的两点距离2L-1;
循环2——
一种一种蝶形地计算,给出旋转因子
WJ 2L
的指数J,每级
有2L-1种不同的蝶;
循环3 ——
同一种蝶里一个一个蝶形地计算,给出同一种蝶形里各
蝶形的间隔距离2L。
看图说明
3. 程序框图
图4.2.6 DIT―FFT运算程序框图
第4章 快速傅里叶变换(FFT)
从定义来看N点长的DFT的运算量。
N 1
X (k) x(n)WNkn n0
1 直接计算DFT需:复乘N2次,复加(N-1)N次。因 为 1个k需复乘N次,复加(N-1)次。
对于复乘1次需50μs,复加1次需10μs的计算机,用直 接法做N=1024点长的DFT共需多少时间?
第4章 快速傅里叶变换(FFT)
K LH
J<K
N
Y
J JK
J JK KK 2
图4.2.9 倒序程序框图
第4章 快速傅里叶变换(FFT)
习题1和2的解
clear; N=1024; A=[N^2,N*(N-1);
N/2*log2(N),N*log2(N); N*log2(N)+N,2*N*log2(N)] b=[5e-6,1e-6]'; T=A*b f=N/T(3)/2
第4章 快速傅里叶变换(FFT)
将式(4.2.7)和式(4.2.8)用流图符号表示,称为蝶形运算符 号。
A
A+ BC
C B
A- BC
采用蝶形符号可以表示N=8 点的DFT运算,下面是经过1 次分解的DFT的示意图。 注意:上半部份有4点,用“+”的公式做;
下半部份有4点,用“-”的公式做。
第4章 快速傅里叶变换(FFT)
相关文档
最新文档