第第第 第第第第第第第 第第第 第第第第第第第 Fast Fourier Transform
Mar 19, 2016
第四章 快速傅立叶变换第四章 快速傅立叶变换 Fast Fourier Transform
第一节 直接计算 DFT 的问题及改进途径1 、问题的提出 设有限长序列 x(n) ,非零值长度为N ,若对 x(n) 进行一次 DFT 运算,共需多大的运算工作量?
计算成本 ?计算速度 ?
2. DFT 的运算量 回忆 DFT和 IDFT 的变换式:
10)(1)]([)(1
0
NnWkXN
kXIDFTnxN
k
nk
10)()]([)(1
0
NkWnxnxDFTkX
N
n
nkN
1) x(n) 为复数, 也为复数。2) DFT与 IDFT 的计算量相当。
nkN
jnkN eW
2
注意:
计算机运算时(编程实现): 0k 0)1(0100 )1()1()0()0( N
NNN WNxWxWxX
1k 0 1 11 ( 1) 1(1) (0) (1) ( 1) NN N NX x W x W x N W
2k 0 2 1 2 ( 1) 2(2) (0) (1) ( 1) NN N NX x W x W x N W
1Nk 0 1 1 1 ( 1) 1( 1) (0) (1) ( 1)N N N N
N N NX N x W x W x N W
NN 次复乘,次复乘, N-1N-1 次复加次复加
NN 个点 个点
10)()]([)(1
0
NkWnxnxDFTkX
N
n
nkN
以 DFT 为例:
复数乘法 复数加法一个 X(k) N N – 1
N个 X(k)(N点 DFT)
N 2 N (N – 1)
实数乘法 实数加法一次复乘 4 2
一次复加 2
一个 X (k) 4N 2N+2 (N – 1)=2 (2N – 1)
N个 X (k)(N点 DFT)
4N 2 2N (2N – 1)
1
0
( )N
nkN
n
x n W
运算量
(a+jb)(c+jd)=(ac-bd)+j(bc+ad)
例:计算一个 N点 DFT ,共需 N2 次复乘。以做一次 复乘 1μs 计,若 N =4096 ,所需时间为
ss 1716777216)4096( 2
例:石油勘探,有 24 个通道的记录,每通道波形记 录长度为 5 秒,若每秒抽样 500 点 / 秒, 1 )每道总抽样点数: 500*5=2500 点 2 ) 24 道总抽样点数: 24*2500=6 万点 3) DFT 复乘运算时间: N2=(60000)2=36*108 次
ss 360010*36)60000( 82
由于计算量大,且要求相当大的内存,难以实现实时处理,限制了 DFT 的应用。长期以来,人们一直在寻求一种能提高 DFT 运算速度的方法。 FFT 便是 Cooley & Tukey 在 1965 年提出的的快速算法,它可以使运算速度提高几百倍,从而使数字信号处理学科成为一个新兴的应用学科。
第二节 改善 DFT 运算效率的基本途径kn
NW 1 、利用 DFT 运算的系数 的固有对称性和周期 性,改善 DFT 的运算效率。 1 )对称性 2 )周期性 3 )可约性
( ) ( ) nk N n k n N kN N NW W W 周期性
nk mnkN mNW W可约性 /
/nk nk mN N mW W
2j mnkmNe
22 1Nj jNe e
0 / 2 ( / 2) 1 1N k N kN N N NW W W W 特殊点:
nkNW 的特性
2j nknk NNW e
* ( ) ( ) ( )nk nk N n k n N kN N N NW W W W 对称性
Nk nkN NW W
nN nk
N NW W
2 、将长序列 DFT 利用对称性和周期性分解为短 序列 DFT 的思路 因为 DFT 的运算量与 N2 成正比的,如果一个
大点数 N的 DFT 能分解为若干小点数 DFT 的组合,则显然可以达到减少运算工作量的效果。
N 点DFT
N/2 点DFT
N/2 点DFT
N/4 点DFT
N/4 点DFT
N/4 点DFT
N/4 点DFT
…….
复乘:2N
22
22
NN
2
2N
2222
4444
NNNN
4
2N
FFT 算法的基本思想: 利用 DFT 系数的特性,合并 DFT 运算中的某些项 把长序列 DFT→ 短序列 DFT ,从而减少运算量。FFT算法分类 :
时间抽选法 DIT: Decimation-In-Time频率抽选法 DIF: Decimation-In-Frequency
第三节 按时间抽选的基 2-FFT 算法1 、算法原理
设输入序列长度为 N=2M(M 为正整数,将该序列按时间顺序的奇偶分解为越来越短的子序列,称为基 2 按时间抽取的 FFT 算法。也称为 Coolkey-Tukey 算法。 其中基 2 表示: N=2M , M 为整数 . 若不满足这个条件,可以人为地加上若干零值(加零补长)使其达到 N=2M 。
先将 x(n) 按 n 的奇偶分为两组,作变量置换 :
当 n= 偶数时,令 n=2r;
当 n= 奇数时,令 n=2r+1;
分组,变量置换2 、算法步骤
10)()]([)(1
0
NkWnxnxDFTkX
N
n
nkN
得到:1,...,0)()12(
)()2(2
2
1
Nrrxrx
rxrx
带入 DFT 中
1
0)(
)]([)(N
n
nkNWnx
nxDFTkX
12/
0
)12(12/
0
2 )12()2(N
r
krN
N
r
rkN WrxWrx
1
0
1
0)()(
N
n
nkN
N
n
nkN
nn
WnxWnx为奇数为偶数
12/
0
22
12/
0
21 )()(
N
r
rkN
kN
N
r
rkN WrxWWrx
所以
12/
0
22
12/
0
21 )()()(
N
r
rkN
kN
N
r
rkN WrxWWrxkX
由于 nN
nN
jnN
jnN WeeW 2/
2/222
2 --
12/
02/2
12/
02/1 )()(
N
r
rkN
kN
N
r
rkN WrxWWrx
)()( 21 kXWkX kN
1,,1,0 2 Nk 1,,1,0 Nk ?1,,1,0 2 Nk
X1(k)、 X2(k) 只有 N/2 个点,以 N/2 为周期;而 X
(k) 却有 N 个点,以 N 为周期。要用 X1(k)、 X2(k) 表达全部的 X (k) 值,还必须利用 WN 系数的周期特性。
rkN
kNrN WW 2/
)2/(2/
12/
02/1
12/
0
)2/(2/11 )()()2/(
N
r
rkN
N
r
kNrN WrxWrxkNX
)()2/()()2/(
22
11
kXkNXkXkNX
后半部分前半部分
又考虑到 的对称性:kNW
kN
kN
NN
kNN WWWW 2/)2/(
)2/()2/()2/( 2)2/(
1 kNXWkNXkNX kNN
有:1,,1,0)()()( 221 Nk
N kkXWkXkX
1,,1,0)()( 221 NkN kkXWkX
后半部分前半部分
)()()2/( 21 kXWkXkNX kN
)()()( 21 kXWkXkX kN
1,,1,0 2 Nk
)(1 kX
)(2 kX
kNW
)()( 21 kXWkX kN
)()( 21 kXWkX kN
蝶形运算流图符号 说明: (1) 左边两路为输入 (2) 右边两路为输出 (3) 中间以一个小圆表示加、 减运算(右上路为相加 输出、右下路为相减输 出 )1 个蝶形运算需要 1 次复乘, 2 次复加
复数乘法 复数加法一个 N 点 DFT N 2 N (N–1)
一个 N / 2点 DFT (N / 2)2 N / 2 (N / 2 –1)
两个 N / 2点 DFT N 2 / 2 N (N / 2 –1)
一个蝶形 1 2
N / 2 个蝶形 N / 2 N
总计 N2/2 + N/2≈ N2/2
N(N/2-1) + N≈ N2/2
运算量减少了近一半
分解后的运算量:
)()()2/(
)()()(
21
21
kXWkXNkX
kXWkXkXk
N
kN
12/,,0 Nk
先将 N=8 点的 DFT 分解成 2 个 4 点 DFT:
可知:时域上: x(0),x(2),x(4),x(6) 为偶子序列 x(1),x(3),x(5),x(7) 为奇子序列 频域上: X(0)~X(3) ,由 X(k) 给出 X(4)~X(7) ,由 X(k+N/2) 给出
例子:求 N=23=8点 FFT 变换 按 N=8→N/2=4 ,做 4 点的 DFT:
N=8 点的直接 DFT 的计算量为: 复乘: N2 次 = 64 次 复加: N(N-1) 次 = 8×7=56 次
)()()2/(
)()()(
21
21
kXWkXNkX
kXWkXkXk
N
kN
12/,,0 Nk
此外,还有 4 个蝶形结,每个蝶形结需要 1 次复乘, 2 次复加。一共是:复乘 4 次,复加 8 次。
得到 X1(k)和 X2(k) 需要: 复乘: (N/2)2+ (N/2)2 次 = 32 次 复加: N/2(N/2-1)+N/2(N/2-1) =12+12 =24 次
用分解的方法得到 X (k) 需要: 复乘: 32+4 = 36 次 复加: 24+8 = 32 次
N点 DFT 的一次时域抽取分解图(N=8)
4点
DFT
4点
DFT
x(0)
x(2)x(4)x(6)
x(1)x(3)x(5)x(7)
X1(0)
X1(1)X1(2)X1(3)X2(0)X2(1)X2(2)X2(3)
X(0)X(1)X(2)X(3)X(4)X(5)X(6)X(7)3
8W
28W
18W
08W
奇序列、偶序列、
)6()2()4()0(
:)(1 xxxx
rx
奇序列、偶序列、
同理:)7()3()5()1(
:)(2 xxxx
rx
因为 4点 DFT 还是比较麻烦,所以再继续分解。 若将 N/2(4 点 ) 子序列按奇 / 偶分解成两个 N/4 点 (2点 ) 子序列。即对将 x1(r) 和 x2(r) 分解成奇、偶两个 N/4点 (2 点 ) 点的子序列。
1,0)1...0()()12(
)()2(4
41
31
lllxlx
lxlxN 此处,
奇序列偶序列
设:
1,0)1...0()()12(
)()2(4
62
52
lllxlx
lxlxN 此处,
奇序列偶序列
设:
那么, X1(k) 又可表示为
14/
0
)12(2/1
14/
0
22/11 )12()2()(
N
l
klN
N
l
lkN WlxWlxkX
14/
04/42/
14/
04/3 )()(
N
l
lkN
kN
N
l
lkN WlxWWlx
)()( 42/3 kXWkX KN
1,......1,0)()()(
)()()(4
42/341
42/31
N
kN
N
kN k
kXWkXkX
kXWkXkX
14/
0
)12(2/2
14/
0
22/22 )21()2()(
N
l
klN
N
l
lkN WlxWlxkX
14/
04/62/
14/
04/5 )()(
N
l
lkN
kN
N
l
lkN WlxWWlx
1,......1,0)()()(
)()()(4
62/542
62/52
N
kN
N
kN k
kXWkXkX
kXWkXkX
X2(k) 也可以进行相同的分解:
注意:通常我们会把 写成 。kNW 2/
kNW 2
)()( 62/5 kXWkX KN
N点 DFT 的第二次时域抽取分解图 (N=8)
2点DFT
2点DFT
2点DFT
2点DFT
x(0)x(4)x(2)x(6)x(1)x(5)x(3)x(7)
X3(0)X3(1)X4(0)X4(1)X5(0)X5(1)X6(0)X6(1)
08W2
8W
08W2
8W
X1(0)X1(1)X1(2)X1(3)X2(0)X2(1)X2(2)X2(3) 3
8W
28W
18W
08W
X(0)X(1)X(2)X(3)X(4)X(5)X(6)X(7)
4点
DFT
4点
DFT
x(0)
x(2)x(4)x(6)
x(1)x(3)x(5)x(7)
X1(0)
X1(1)X1(2)X1(3)X2(0)X2(1)X2(2)X2(3)
X(0)X(1)X(2)X(3)X(4)X(5)X(6)X(7)3
8W
28W
18W
08W
)1()0(
)()]([)(
323
14/
04/333
xWx
WlxlxDFTkX
k
N
l
klN
)1()0()1()0()1(
)1()0()0(
30
2331
233
30
233
xWxxWxX
xWxX
8
8
08W
X3(0)
X3(1)
x(0)=x3(0)
x(4)=x3(1)
N点 DIT―FFT 运算流图 (N=8)
x(0)
x(4)
x(2)
x(6)
x(1)
x(5)
x(3)
x(7)
X(0)
X(1)
X(2)
X(3)
X(4)
X(5)
X(6)
X(7)
0NW
0NW
0NW
0NW
0NW
2NW
0NW
2NW
0NW
2NW
1NW
3NW
3、 DIT―FFT 算法与直接计算 DFT 运算量的比较
22log
2NN
N
1)、 N=2M的 DFT 运算可分成 M 级,每一级有 N/2 个蝶形 ,每个蝶形有一次复乘两次复加。N
N2log
2NN 2log2) 、所以 M 级共有 次复乘和 次复加。
3) 、若直接计算 DFT ,需 N2 次复乘和 N(N-1) 次复加。显然,当 N 较大时,有: 例如, N=210=1024 时
2
2
1048576 204.8( / 2) log 5120
NN N
FFT 算法与直接计算 DFT 所需乘法次数的比较曲线
4、 DIT―FFT 的运算规律及编程思想 FFT 的每级(列)计算都是由 N 个复数数据(输入)两两构成一个蝶型(共 N/2 个蝶形)运算而得到另外 N 个复数数据(输出)。 当数据输入到存储器以后,每一组运算的结果,仍然存放在这同一组存储器中直到最后输出。例:将 x(0) 放在单元 A(0) 中,将 x(4) 放在单元 A(1)中, W8
0
放在一个暂存器中。将 x(0) + W8
0x(4) → 送回 A(0) 单元将 x(0) - W8
0x(4) → 送回 A(1) 单元0
8W
X3(0)
X3(1)
x(0)
x(4)
1) 原位运算 ( 亦称同址计算 )
x(0)
x(4)
x(2)
x(6)
x(1)
x(5)
x(3)
x(7)
X(0)
X(1)
X(2)
X(3)
X(4)
X(5)
X(6)
X(7)
0NW
0NW
0NW
0NW
0NW
2NW
0NW
2NW
0NW
2NW
1NW
3NW
回顾: N点 DIT―FFT 运算流图 (N=8)
如上所述, N点 DIT―FFT 运算流图中,每级都有 N/2 个蝶形。每个蝶形都要乘以因子 WN
P ,称其为旋转因子, p 称为旋转因子的指数。
2)旋转因子的变化规律
观察 FFT 运算流图发现,第 L 级共有 2L-1 个不同的旋转因子。 N=23=8 时的各级旋转因子表示如下:
L=1 时, WNp=WN/4
J , N/4 =21 =2L , J=0
L=2 时, WNp =WN/2
J , N/2 =22 =2L , J=0, 1
L=3 时, WNp =WN
J , N =23 =2L ,J=0, 1, 2, 3
对 N=2M 的一般情况,第 L 级的旋转因子为:12,...,1,0 1
2 LJPN JWW L
MLMLML N 2222
12,...,1,0 122
LJ
NJ
NP
N JWWWLM
ML
LMJp 2
设序列 x(n)经时域抽选 (倒序 ) 后,存入数组 X中。如果蝶形运算的两个输入数据相距 B 个点 (B=2L-
1) ,应用原位计算,则蝶形运算可表示成如下形式:
pNLLL
pNLLL
WBJXJXBJX
WBJXJXJX
)()()(
)()()(
11
11
MLJJp LLM ,...,2,112,...,1,02 1 ,,式中:
下标 L 表示第 L 级运算, XL(J) 则表示第 L 级运算后数组元素 X(J) 的值。
3) 编程思想及流程图开始
送入 x(n)和 N=2M
调整输入 x(n) 的顺序
for(L=1; L<=M; L++)
B = 2L-1
for(J=0; J<=B-1; J++)
p = J·2M-L
for(k = J; k<= N-1; k=k+2L)
pN
pN
WBkXkXBkX
WBkXkXkX
)()()(
)()()(
输出结果结束
4 )码位倒序 由 N=8 蝶形图看出:原位计算时, FFT 输出的 X(k) 的次序正好是顺序排列的,即 X(0)…X(7),但输入 x(n) 都不能按自然顺序存入到存储单元中,而是按 x(0),x(4),x(2),x(6) ,x(1),x(5),x(3),x(7) 的顺序存入存储单元,即为乱序输入,顺序输出。 这种顺序看起来相当杂乱,然而它是有规律的。即码位倒读规则。
自然顺序 n 二进制码表示 码位倒读 码位倒置顺序n’
以 N=8 为例:
0
1
2
3
4
5
6
7
000
001
010
011
100
101
110
111
000
100
010
110
001
101
011
111
0
4
2
6
1
5
3
7
看出:码位倒读后的顺序刚好是数据送入计算机内的顺序。
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)
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)
倒序规律
对于数对于数 NN ,,在其二进制最高位加在其二进制最高位加 11 ,等于加,等于加 N/2N/2 。。
若已知某个反序号为若已知某个反序号为 JJ ,,为求下一个反序号,为求下一个反序号,可先判可先判 JJ 的最高位:的最高位: 1) 1) 若为若为 00 ,则把该位变成,则把该位变成 11 (即加(即加 N/2N/2 ))就得就得到下到下 一个反序号,一个反序号, 2) 2) 若为若为 11 ,则需判断次高位:,则需判断次高位: ① ① 若次高位为若次高位为 00 ,则把最高位变,则把最高位变 00 ((相当减去相当减去 N/2N/2 ))后,再把次高位变后,再把次高位变 11 (即加(即加 N/4N/4 )。)。
② ② 若次高位为若次高位为 11 ,则需判断次次高位,则需判断次次高位…………
分析:分析:
倒倒序序排排列列算算法法的的流流程程图图
正序序列已在数组 A[ ] 中,输 入 N
LH= N/2 , j=LH , N1 = N-2
j=j-kk=k/2
k=LH
j<k
j=j+k
T = A(j) A(i) = A(j) A(j) = T
for(i=1; i<=N1; i++)
i ≥ j
NNYY
YY
NN
第四节 按频率抽选的基 2-FFT 算法 在基 2 快速算法中,频域抽取法 FFT 也是一种常用的快速算法,简称 DIF―FFT。
设序列 x(n) 长度为 N=2M ,首先将 x(n)前后对半分开,得到两个子序列,其 DFT 可表示为如下形式
1-N
N/2n
knN
1-N/2
0n
knN
1-N
0n
knN WnxWnxWnxX(k) )()()(
-1N/2
0n
)2/(-1N/2
0n)2/()( Nnk
Nkn
N WNnxWnx
-1N/2
0n
-1N/2
0n)2/()1()( kn
Nkkn
N WNnxWnx 1,...1,0 Nk
kjkkNN
jkNN eeW 12
22/
式中,
12/
0
1,.....1,0,)2/(1)()(N
n
knN
k NkWNnxnxkX
:)(k 分为两部分的奇偶可把按 kX
12/....2,1,0,12,2 Nrrkrk 及令
为偶数时,K
12/
02/
12/
0
2
)2/()(
)2/()(2
N
n
rnN
N
n
rnN
WNnxnx
WNnxnxrX
为奇数时,K
12/
02/
12/
0
12
)2/()(
)2/()(12
N
n
rnN
nN
N
n
nrN
WWNnxnx
WNnxnxrX )(
nNW
)2/()()(1 Nnxnxnx
nNWNnxnxnx )2/()()(2
)(nx
)2/( Nnx
1,...,1,0)2/()()(
)2/()()(2
2
1
N
nN
nWNnxnxnx
Nnxnxnx令
nrN
N
n
nrN
N
n
WnxrXkX
WnxrXkX
2/
12/
022
2/
12/
011
)()12()(
)()2()(
DIF―FFT 一次分解运算流图 (N=8)
4点
DFT
4点
DFT
x(0)x(1)x(2)x(3)x(4)x(5)x(6)
x(7)
X(0)X(2)X(4)X(6)X(1)X(3)X(5)
X(7)3NW
2NW
1NW
0NW
x1(0)x1(1)x1(2)x1(3)x2(0)x2(1)x2(2)x2(3)
DIF―FFT 二次分解运算流图(N=8)
N /4点DFT
W N0
W N1
W N2
W N3
x (0)
x (1)
x (2)
x (3)
x (4)
x (5)
x (6)
x (7)
X (0)
X (4)
X (2)
X (6)
X (1)
X (5)
X (3)
X (7)
W N0
W N2
W N0
W N2
N /4点DFT
N /4点DFT
N /4点DFT
DIF―FFT 运算流图 (N=8)
W N0
W N1
W N2
W N3
W N0
W N2
W N0
W N2
W N0
W N0
W N0
W N0
X (0)
X (4)
X (2)
X (6)
X (1)
X (5)
X (3)
X (7)
x (0)
x (1)
x (2)
x (3)
x (4)
x (5)
x (6)
x (7)
时间抽取算法与频率抽取算法的比较1) 频率抽选法和时间抽选法总的计算量是相同的
NN
2log2
NN 2log复乘: 复加:2) 频率抽取法和时间抽取法一样,都适用于原位运 算, 即蝶形的输入和输出占用同一个存储单元。3) 均存在码位倒序问题。4) 频率抽选法和时间抽选法一样,基本运算也是蝶形 运算。但两者的蝶形形式略有不同。
第五节 IDFT 的快速算法- IFFT上述 FFT 算法流图也可以用于离散傅里叶逆变换(Inverse Discrete Fourier Transform ,简称
IDFT)。比较 DFT和 IDFT 的运算公式:
10)(1)]([)(1
0
NnWkXN
kXIDFTnxN
k
nk
10)()]([)(1
0
NkWnxnxDFTkX
N
n
nkN
1) 旋转因子: kN
kN WW
2) 系数: MNN 21 ,
DIT―IFFT 运算流图
W N0
W N1
W N2
W N3
W N0
W N0
N1x (0)
x (4)
x (2)
x (6)
x (4)
x (5)
x (3)
x (7)
X (0)
X (1)
X (2)
X (3)
X (4)
X (5)
X (6)
X (7)
W N2
W N2
N1
N1
N1
N1
N1
N1
N1
DIT―IFFT 运算流图 (防止溢出 )
W N0
21
21 x (0)
x (4)
x (2)
x (6)
x (1)
x (5)
x (3)
x (7)
X (0)
X (1)
X (2)
X (3)
X (4)
X (5)
X (6)
X (7)
21
21
21
W N1
21
W N2
21
W N3
21
21
21
W N0
21
W N2
21
21
21
W N0
21
W N2
21
21
W N0
21
21
W N0
21
21
21
W N0
21
W N0
21
如果希望直接调用 FFT 子程序计算 IFFT ,则可用下面的方法:
1
0
1
0
1( ) ( )
1( ) ( )
Nkn
Nk
NknN
k
x n X k WN
x n X k WN
对上式两边同时取共轭,得:
1
0
1 1( ) [ ( ) ] [ ( )]N
knN
k
x n X k W DFT X kN N
例 1 、如果通用计算机的速度为平均每次复乘需要 5s ,每次复加需要 0.5s ,用它来计算 512点 的 DFT[x(n)] ,问:1 )直接计算需要多少时间?
2 )用 FFT 需要多少时间?解: 1 )用 DFT 进行运算:
复乘: T1=N2×5×10-6=1.31072 秒 复加: T2=N(N-1)×0.5×10-6=0.130816 秒 总共: T=T1+T2=1.441536 秒
2 )用 FFT 进行运算: 复乘: T1
’=(N/2)log2N×5×10-6=0.01152 秒
复加: T2’= Nlog2
N ×0.5×10-6=0.002304 秒 总共: T’=T1
’+T2’=0.013824 秒
例 2 、对一个连续时间信号 xa(t)采样 1 秒得到 4096个采 样点的序列,求:1 )若采样后没有发生混叠现象, xa(t) 的最高频率是
多少?解: 1 秒内采样 4096 个点,说明采样频率是 4096Hz。
Hzf 4096s 即:
hff 2s Hzfh 2048
2 )若计算采样信号的 4096点 DFT, DFT 系数之间 的频率间隔是多少?
解: ( 要求解的是频谱分辨的间隔 F)
Hzf 4096s 频谱范围是:4096N
)(14096
)(4096s HzHz
Nf
F
例 3 、长度为 240 点的序列 x(n) 与长度为 N 点的h(n)卷 积。当 N=10 和 240 时,直接进行卷积 x(n)*h(n) 和用 IFFT[X(K)·H(K)] 的方法相比,那种方法求 解 y(n) 的效率更高?x(n) h(n) y(n)=x(n)*h(n)
L≥N1+N2-1X(k)补 L-N1 个零x(n) L点 DFT
补 L-N2 个零h(n) L点 DFT
L点 IDFT y(n)= x(n)*h(n)
H(k)
Y(k)
直接进行卷积( N=10):
n
mnhnxnhnxny )()()()()(
乘法次数: 240×10 = 2400 次用 FFT 的方法( N=10):添零到 256 点, L=256
乘法次数:3×(L/2)log2
L+ L = 3×128×8+ 256 = 3328 次
直接进行卷积( N=240):
n
mnhnxnhnxny )()()()()(
乘法次数: 240×240 = 57600 次用 FFT 的方法( N=240):添零到 512 点, L=512
乘法次数:3×(L/2)log2
L+ L = 3×256×9+ 512 = 7424 次