05-第五章_快速傅里叶变换(蝶形运算)

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
N 2 −1 r =0
∑ x (r )W
1
r ( N 2+ k ) N 2
rk = ∑ x1 (r )WN 2 = X 1 (k ) r =0
N 2 −1
同理可得
X2(
N + k ) = X 2 (k ) 2
12
考虑到 及前半部分X(k) 及前半部分
( WN N 2 + k ) = WNN 2 ⋅ WNk = −WNk
2
5.1 引言
DFT在实际应用中很重要 DFT在实际应用中很重要: 可以计算信号的频 在实际应用中很重要: 功率谱和线性卷积等。 谱、功率谱和线性卷积等。 直接按DFT变换进行计算,当序列长度N 直接按DFT变换进行计算,当序列长度N很 变换进行计算 大时,计算量非常大,所需时间会很长。 大时,计算量非常大,所需时间会很长。 FFT并不是一种与 FFT并不是一种与DFT不同的变换,而是 并不是一种与DFT不同的变换, 不同的变换 DFT的一种快速计算的算法。 DFT的一种快速计算的算法。 的一种快速计算的算法
N log 2 N 2
计算量 之比M 36.6 64.0 113.8 204.8 372.4
1 4 12 32 80 192
448 1 024 2 304 5 120 11 264
24
5.3.3 按时间抽取的FFT算法的特点 按时间抽取的FFT算法的特点
序列的逆序排列 同址运算(原位运算) 蝶形运算两节点间的距离
X(k) = X1(k) +Wk X2(k) N
因此可得后半部分X(k) 因此可得后半部分
X (k +
k=0,1, …,N/2-1 , , , -
N N N k ) = X 1 (k + ) + WN + N 2 X 2 (k + ) 2 2 2
k = X 1 ( k ) − WN X 2 ( k )
第五章 快速傅里叶变换
本章目录
直接计算DFT的问题及改进的途径 的问题及改进的途径 直接计算 按时间抽取的基2-FFT算法 时间抽取的 FFT算法 按频率抽取的基2-FFT算法 频率抽取的基 FFT算 的基2 快速傅里叶逆变换 快速傅里叶逆变换(IFFT)算法 傅里叶逆变换(IFFT)算法 Matlab实现 Matlab实现

l =0
x3 (l )W
lk N /4
=
lk x3 (l )WN / 4 ∑ l =0
1
k=0, 1
0 0 X 3 (0) = x3 (0) + W20 x3 (1) = x(0) + W2 x(4) = x (0) + WN x(4)
X 3 (1) = x3 (0) + W21 x3 (1) = x(0) + W21 x(4) = x(0) − WN0 x(4)
14
以8点为例第一次按奇偶分解
为例, 以N=8为例, 为例 分解为2个 点 分解为 个4点 的DFT,然后 , 做8/2=4次蝶形 次蝶形 运算即可求出 所有8点 所有 点X(k)的 的 值。
0 WN
1 WN
2 WN
3 WN
15
蝶形运算量比较
N点DFT的运算量 DFT的运算量
复数乘法次数: N2 复数加法次数: N(N-1)
n =0
N −1 n =0
N −1
nk N
= ∑ [Re x( n) + j Im x( n)][Re WNnk + j Im WNnk ]
n =0
N −1
= ∑ {[Re x( n) ⋅ Re WNnk − Im x(n) ⋅ Im WNnk ]
+ j[Re x ( n) ⋅ Im WNnk + Im x ( n) ⋅ Re WNnk ]}
由按时间抽取法FFT的信号流图可知,当N=2L时,共有 L 级 蝶形运算;每级都由 N/2 个蝶形运算组成,而每个蝶形有 1 次复乘、 2 次复加,因此每级运算都需 N/2 次复乘和 N 次复加。
22
级运算总共需要: 这样 L 级运算总共需要:
N N 复数乘法: ⋅ L = log 2 N 2 2
11
k X 因此, 只能计算出X(k)的前一半值。 的前一半值。 因此, (k) = X1(k) +W X2(k) 只能计算出 的前一半值 N
后一半X(k) 值, N/2 , N/2 +1, …,N ? 后一半 , , 利用 可得到
N X1 ( + k ) = 2
rk r N WN (2 2+ k ) = WN 2
9
5.3.1 算法原理
设N=2L,将x(n)按 n 的奇偶分为两组: = 按 的奇偶分为两组:
x(2r ) = x1 (r )
x(2r + 1) = x2 (r )
r =0,1,…, − 1 , , ,
N 2

X(k) = D [x(n)] = ∑x(n)Wnk FT N
n=0
N− 1
=
n=0 n为偶数
k=0,1, …,N/2-1 , , , -
13
蝶形运算
X(k) = X1(k) +Wk X2(k) N
X ( k ) = X 1 ( k ) − WNk X 2 ( k )
蝶形运算式
蝶形运算信 号流图符号
因此,只要求出 个 点的DFT,即X1(k)和X2(k),再 因此,只要求出2个N/2点的 点的 , 和 , 经过蝶形运算就可求出全部X(k)的值,运算量大大减少。 的值, 经过蝶形运算就可求出全部 的值 运算量大大减少。
3
5.2 直接计算DFT的问题及改进的途径 直接计算DFT的问题及改进的途径
DFT的运算量 DFT的运算量 设复序列x(n) 长度为 点,其DFT为 长度为N点 设复序列 为
X (k ) = ∑ x( n)WNnk
n= n=0 N −1
k=0,, ,N-1 ,,…, ,,
(1)计算一个X(k) 值的运算量 )计算一个
这说明, 可全部由蝶形运算来完成。 这说明,N=2M的DFT可全部由蝶形运算来完成。 可全部由蝶形运算来完成
20
以8点为例第三次按奇偶分解
N=8按时间抽取法 按时间抽取法FFT信号流图 按时间抽取法 信号流图
21
5.3.2 按时间抽取基2-FFT算法与直接计算DFT运算量的比较 按时间抽取基2 FFT算法与直接计算DFT运算量的比较
mnk WmN = WNnk
/ WNnk = WNnk mm /
( k WN k + N / 2 ) = −WN
WNN / 2 = −1
8
5.3 按时间抽取的基2-FFT算法 按时间抽取的基2 FFT算法
算法原理 按时间抽取基-2FFT算法与直接计算 按时间抽取基-2FFT算法与直接计算 DFT运算量的比较 DFT运算量的比较 按时间抽取的FFT算法的特点 按时间抽取的FFT算法的特点 按时间抽取FFT算法的其它形式流程图 按时间抽取FFT算法的其它形式流程图
∑ x(n)W
N −1
nk N
+
n=0 n为奇数
nk x (n)WN ∑
N −1
10
=
= ∑x(2r)W2rk + ∑x(2r +1W(2r+1)k ) N N
r=0 r=0
rk rk = ∑x1(r)WN +Wk ∑x2 (r)WN N r=0 2 r=0 2 N − 1 2 N − 1 2
n =0 n为偶数 N − 1 2
复数乘法次数: 复数乘法次数: N 复数加法次数: 复数加法次数: N-1
4
5.2.1 DFT的运算量 DFT的运算量
(2)计算全部 个X(k) 值的运算量 )计算全部N个
复数乘法次数: 复数乘法次数: N2 复数加法次数: 复数加法次数: N(N-1)
(3)对应的实数运算量 )
X ( k ) = ∑ x( n)W
7ຫໍສະໝຸດ Baidu
5.2.2 减少运算工作量的途径
nk 的以下特性对DFT进行分解: 进行分解: 主要原理是利用系数 W N 的以下特性对 进行分解
(1)对称性 )
− (WNnk )∗ = WN nk = WNk ( N − n )
(2)周期性 ) (3)可约性 ) 另外, 另外,
( WN n + N ) k = WNn ( k + N ) = WNnk
分解一次后所需的运算量= N/2的DFT+ 分解一次后所需的运算量=2个N/2的DFT+ N/2蝶形 N/2蝶形: 蝶形:
复数乘法次数: 2*(N/2)2+N/2=N2/2+N/2 复数加法次数: 2*(N/2)(N/2-1)+2*N/2=N2/2
因此通过一次分解后,运算工作量减少了差 因此通过一次分解后, 不多一半。 不多一半。
复数加法:N ⋅ L = N log2 N 直接DFT算法运算量 算法运算量 直接 复数乘法: N2 复数加法: N(N-1) 直接计算DFT与FFT算法的计算量之比为 与 算法的计算量之比为M 直接计算 算法的计算量之比为 N2 2N M= = N log 2 N log 2 N 2
23
FFT算法与直接DFT算法运算量的比较 FFT算法与直接DFT算法运算量的比较
rk N 2
∑ x1 (r )W
=
N 4 −1 l =0
∑ x1 (2l )W
N 4 −1 l =0 k N 2 4
2 lk N 2
+
N 4 −1 l =0
( l x1 (2l + 1)WN22+1) k ∑
=
N 4 −1 l =0
∑ x (l )W
3
lk N 4
+W
∑ x (l )W
lk N 4
k = X 3 ( k ) + WN / 2 X 4 ( k )
N 2 4 8 16 32 64 N2 4 16 64 256 1028 4049
N log 2 N 2
计算量 之比M 4.0 4.0 5.4 8.0 12.8 21.4
N 128 256 512 1024 2048
N2 16 384 65 536 262 144 1 048 576 4 194 304
16
进一步按奇偶分解
由于N=2L,因而N/2仍是偶数 ,可以进一步把每个N/2点 子序列再按其奇偶部分分解为两个N/4点的子序列。 以N/2点序列x1(r)为例 则有
X 1 (k ) =
N 2 −1 r =0
x1 (2l ) = x3 (l ) N l = 0,1,…, − 1 x1 (2l + 1) = x4 (l ) 4
r WN
的确定
k=0,1,…,
N −1 4
17

N X 1 + k = X 3 ( k ) − WNk / 2 X 4 ( k ) 4
k=0,1,…,
N −1 4
由此可见,一个N/2点DFT可分解成两个 点DFT。 可分解成两个N/4点 由此可见,一个 点 可分解成两个 。 同理,也可对 进行同样的分解, 同理,也可对x2(n)进行同样的分解,求出 2(k)。 进行同样的分解 求出X 。
6
DFT运算量的结论 DFT运算量的结论
N点DFT的复数乘法次数举例 点 的复数乘法次数举例 N 2 4 8 16 32 N2 4 16 64 256 1028 N 64 128 256 512 1024 N2 4049 16384 65 536 262 144 1 048 576
结论: 很大时, 结论:当N很大时,其运算量很大,对实时性很强的信号 很大时 其运算量很大, 处理来说,要求计算速度快,因此需要改进DFT的计算 处理来说,要求计算速度快,因此需要改进 的计算 方法,以大大减少运算次数。 方法,以大大减少运算次数。
∑ x(n)W
N −1
nk N
+
n =0 n为奇数 N − 1 2
nk x(n)WN ∑
N −1
= X1(k) +Wk X2 (k) N
式中, 分别是x 式中,X1(k)和X2(k)分别是 1(n)和x2(n)的N/2的DFT。 和 分别是 和 的 的 。 另外,式中 的取值范围是 的取值范围是: , , , 另外,式中k的取值范围是:0,1, …,N/2-1 。 -
18
以8点为例第二次按奇偶分解
19
算法原理
对此例N=8,最后剩下的是4个N/4= 2点的 ,最后剩下的是 个 点的DFT,2点 对此例 点的 , 点 DFT也可以由蝶形运算来完成。以X3(k)为例。 也可以由蝶形运算来完成。 为例。 也可以由蝶形运算来完成 为例
X 3 (k ) =

N / 4 −1
5
一次复数乘法: 次实数乘法 一次复数乘法: 4次实数乘法 一个X(k) : 一个
+ 2次实数加法 次实数加法
4N次实数乘法 + 次实数乘法 2N+2(N-1)= 2(2N-1)次实数加法 次实数加法
所以 整个N点DFT运算共需要: 整个 点 运算共需要: 运算共需要 实数乘法次数: 实数乘法次数: 4 N2 实数加法次数: 实数加法次数: N×2(2N-1)= 2N(2N-1)
相关文档
最新文档