§3.5 快速傅氏变换 (fft)
DESCRIPTION
§3.5 快速傅氏变换 (FFT). 点击进入. 1. 引言. 2. 时间抽选 (DIT) 基 2 FFT 算法. 3. 频率抽选 (DIF) 基 2 FFT 算法. 讲 授 内 容. 4. IFFT 算法. 5. 线性卷积的 FFT 算法. 3.5.1 引言. 一 . DFT 的计算量 两者的差别仅在指数的符号和因子 1/N. 一个 X(k) 的值的计算量 , 如 X(1). 通常 x (n) 和都是复数 , 所以计算一个 X(k) 的值需要 N 次复数乘法运算 , 和 次 - PowerPoint PPT PresentationTRANSCRIPT
5. 线性卷积的 FFT 算法
3. 频率抽选 (DIF) 基 2 FFT 算法4.IFFT 算法
2. 时间抽选 (DIT) 基 2 FFT 算法1. 引言
3.5.1 3.5.1 引言引言一 . DFT 的计算量
两者的差别仅在指数的符号和因子 1/N.
1,,1,0 ,)()(1
0
NkWnxkXN
n
nkN
1
0
1,,1,0 ,)(1)(N
k
nkN NnWkX
Nnx
通常 x(n) 和 都是复数 , 所以计算一个 X(k) 的值需要 N 次复数乘法运算 , 和 次 复数加法运算 . 那么 , 所有的 X(k) 就要 N2 次复 数乘法运算 ,N(N-1) 次复数加法运算 . 当 N 很 大时 , 运算量将是惊人的 , 如 N=1024, 则要完 成 1048576 次 ( 一百多万次 ) 运算 . 这样 , 难以做到实时处理 .
nkNW
1N
一个 X(k) 的值的计算量 , 如 X(1)1210 )1()2()1()0()1( N
NNNN WNxWxWxWxX
二二 .. 改进的途径改进的途径 1. 的对称性和周期性nk
NW
;
)()()()(
**
NknN
kNnN
nkN
kNN
kN
kN
kN
WWW
WWorWW
.
),1(1
),1(
)2/(
2/
)(2)()(
2
kN
NkN
jN
NN
nkNnN
NkN
nkN
knNN
kNnN
WW
eWW
eWWWWWN
得 :
对称性 :周期性 :
利用上述特性 , 可以将有些项合并 , 并将 DFT 分解为短序列 , 从而降低运算次数 , 提高运算速度 .1965 年 , 库利 (cooley) 和图基(Tukey) 首先提出 FFT 算法 . 对于 N 点 DFT, 仅需(N/2)log2N 次复数乘法运算 . 例如 N=1024=210 时,需要 (1024/2)log2 210 =512*10=5120 次。5120/1048576=4.88% , 速度提高 20 倍
3.5.2 3.5.2 时间抽选时间抽选 (DIT)(DIT) 基基 2 FFT2 FFT 算算法法 —库利 —库利 -- 图基算图基算法法一 . 算法原理 ( 基 2FFT)( 一 )N/2 点 DFT1. 先将 按 n 的奇偶分为两组作 DFT, 设 N=2L ,不足时 , 可补些零。这样有 : n 为偶数时 : n 为奇数时 : 1,,1,0 ),()12(
1,,1,0 ),()2(
22
21
N
N
rrxrx
rrxrx
1
0
)()]([)(N
n
nkNWnxnxDFTkX因此,
)(nx
由于 : 所以 ,上式可表示为 :
1
0
22
1
0
21
1
0
)12(1
0
2
1
0
1
0
22
22
))(())((
)12()2(
)()()(
NN
NN
r
rkN
kN
r
rkN
r
krN
r
rkN
N
n
N
n
nkN
nkN
WrxWWrx
WrxWrx
WnxWnxkX(n 为偶数 ) (n 为奇数 )
2
22 )/(222
N
NN WeeW jj
N
)()()()()( 21
1
02
1
01
2
2
2
2kXWkXWrxWWrxkX k
Nr
rkkN
r
rkN
N
N
N
其中,
2.两点结论: (1) X (k),X (k)均为N/2点的DFT。 (2) X(k)=X (k)+W X (k)只能确定出
X(k)的k= 个;即前一半的结果。
1 2
1 2kN
1
0
1
022
1
0
1
011
2
2
2
2
2
2
2
2
)12()()(
)2()()(
N
N
N
N
N
N
N
N
r
rk
r
rk
r
rk
r
rk
WrxWrxkX
WrxWrxkX
1,,1,0 2 N
同理 , 这就是说 ,X1(k),X2(k) 的后一半 ,分别 等于其前一半的值。
3.X(k)3.X(k) 的后一半的确定的后一半的确定rkkrN
N
N WW2
2
2
)(
)()()()2
( 1
1
01
)(1
011
2
2
2
2
2
kXWrxWrxkNXN
N
N
N
N
r
rkkr
r
由于 (周期性) ,所以 :
)()2
( 22 kXkNX
可见 ,X(k)的后一半,也完全由X1(k), X2 (k)的前一半所确定。 *N 点的 DFT 可由两个 N/2 点的 DFT 来计算。
kN
kNN
kN WWWW
NN
22 )(
)2
()2
()2
( 212
NkXWNkXNkXNk
N
1,,1,0 ),()( 221 NkN kkXWkX
又由于 ,所以
实现上式运算的流图称作蝶形运算 前一半
4. 蝶形运算
后一半( N/2 个蝶形 )
( 前一半 )
(后一半 )
1 1
11
-1
)()()(
)()()(
21
21
kXWkXkX
kXWkXkXk
N
kN
)1,,(
)1,,1,0(
2
2
Nk
k
N
N
)()()( 21 kXWkXkX kN
)()()2
( 21 kXWkXkNX kN
)(1 kX
)(2 kXk
NW
由 X1(k) 、 X 2(k) 表示 X(k) 的运算是一种特殊的运算 - 碟形运算
(1)N/2 点的 DFT 运算量 : 复乘次数 :复加次数 :
(2) 两个 N/2 点的 DFT 运算量 : 复乘次数 :复加次数 : (3)N/2 个蝶形运算的运算量 : 复乘次数 :复加次数 :
5. 计算量分析
复乘 :复加 :
4)
2(
22 NN
)12
(2
NN
2
2N
)12
( NN
2N
NN
22
2)1
2(
2NNNN
222
22 NNN总共运算量 :
按奇、偶分组后的计算量:
* 但是 ,N 点 DFT 的复乘为 N2 ; 复加 N(N-1);与分解后相比可知 , 计算工作点差不多减少 一半。
例如 N=8 时的 DFT, 可以分解为两个 N/2=4 点的 DFT. 具体方法如下 : (1)n 为偶数时 , 即 分别记作 :
)(42/ 1 kXDFTN ,得点的进行
3,2,1,0
)2()()(3
04
3
0411
k
WrxWrxkXr
rk
r
rk
);6()3(),4()2(),2()1(),0()0(
1
1
1
1
xxxxxxxx
);6(),4(),2(),0( xxxx
(2) n为奇数时 ,分别记作 :
);7()3(),5()2(),3()1(),1()0(
2
2
2
2
xxxxxxxx
3,2,1,0
)12()()(3
04
3
0422
k
WrxWrxkXr
rk
r
rk
)(42/ 2 kXDFTN ,得点的进行
3,2,1,0),()()4(
)()()(
21
21
kkXWkXkX
kXWkXkXk
N
kN
(3)(3) 对 对 X(k)X(k) 和 和 X (k)X (k) 进行蝶形运算进行蝶形运算 ,, 前半前半部为部为 X(0) X(3),X(0) X(3), 后半部分为后半部分为 X(4) X(7)X(4) X(7) 整个过程如下图所示整个过程如下图所示 :: x1(0)=x(0) x1(1)=x(2) N/2点 x1(2)=x(4) DFT x1(3)=x(6) x2(0)=x(1) x2(1)=x(3) N/2点 x2(2)=x(5) DFT x2(3)=x(7)
1 2 ~ ~
X1(0)
X1(1)X1(2)
X1(3)
X2(0)X2(1)
X2(2)
X2(3)WN
2
WN1
WN0
WN3
-1
-1
-1
-1
X(0)X(1)X(2)X(3)X(4)X(5)X(6)X(7)
由于 N=2 L , 所以 N/2 仍为偶数 , 可以进 一步把每个 N/2 点的序列再按其奇偶部分 分解为两个 N/4 的子序列。例如, n 为偶数时的 N/2 点分解为 :
( 二 ) N/4 点 DFT
1,,1,0),()2( 431 Nlxlx 1,,1,0),()12( 441 Nlxlx 进行 N/4 点的 DFT, 得到
klN
l
lkN
l
lkN
l
lkN
l
WlxWlxkX
WlxWlxkXNN
NN
)12(2/
1
014/
1
044
22/
1
014/
1
033
)12()()(
)2()()(
44
44
(偶中偶 )(偶中奇 )
)()()( 4312
kXWkXkX kN
1,,1,0 4 Nk
从而可得到前 N/4 的 X1(k)
)()()4
( 4312
kXWkXkNX kN
后 N/4 的 X1(k) 为
1,,1,0 4 Nk
( 奇中偶 )
1
04/64/
1
026
1
04/5
1
04/25
44
44
)()12()(
)()2()(NN
NN
l
lkN
lkN
l
l
lkN
l
lkN
WlxWlxkX
WlxWlxkX
( 奇中奇 )
同样对 n 为奇数时, N/2 点分为两个 N/4 点 的序列进行 DFT ,则有 :
14
,,1,0k; (k)XW(k) X(k) X 6kN/252
N
14
,,1,0k; (k)XW(k) Xk)4N( X 6
kN/252
N
进行碟形运算,得:、由 )()( 65 kXkX
例如 ,N=8时的 DFT可分解为四个 N/4的DFT, 具体步骤如下 :
)4()2()1()0()0()0()()()(
13
13
13
xxxxxx
nxrxlx
(1) 将原序列 x(n) 的“偶中偶”部分 :
构成 N/4 点 DFT ,从而得到 X3(0), X3(1) 。
)6()3()1()2()1()0()()()(
14
14
14
xxxxxx
nxrxlx
(2) 将原序列 x(n) 的“偶中奇”部分 :
构成 N/4 点 DFT ,从而得到 X4(0), X4(1) 。(3) 将原序列 x(n) 的“奇中偶”部分 :
)5()2()1()1()0()0()()()(
25
25
25
xxxxxx
nxrxlx
构成 N/4 点 DFT ,从而得到 X5(0), X5(1) 。
(4) 将原序列 x(n) 的“奇中奇”部分 :
)7()3()1()3()1()0()()()(
26
26
26
xxxxxx
nxrxlx
构成 N/4 点 DFT ,从而得到 X6(0), X6(1) 。( 5 )由 X3(0), X3(1), X4(0), X4(1) 进行碟形运算 , 得到 X1(0), X1(1), X1(2), X1(3) 。( 6 )由 X5(0), X5(1), X6(0), X6(1) 进行碟形运算 ,
得到 X2(0), X2(1), X2(2), X2(3) 。
(0)= (0)= (0) N/4 (1)= (2)= (4) DFT (0)= (1)= (2) N/4 (1)= (3)= (6) DFT (0)= (0)= (1) N/4 (1)= (2)= (5) DFT (0)= (1)= (3) N/4 (1)= (3)= (7) DFT
3 1
3 1
4 1
4 1
5 2
5 2
6 2
6 2
0
2N
N
0
2
N
NW
W
W
W
0
1
2
3
N
N
N
N
-1
-1
-1-2-1
-1
W
W
W
W
X (0)X (1)
X (0)
X (1)
X (0)
X (1)X (0)
X (1)
3
3
4
4
5
5
6
6
X (0)
X (1)
X (2)X (3)
X (0)
X (1)X (2)
X (3)
1
1
1
2
2
2
2
1
X(0)
X(1)X(2)
X(3)
X(4)
X(5)
X(6)
X(7)
( 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) 。
这样 , 又一次分解 , 得到四个 N/4 点 DFT, 两级蝶形运算 , 其运算量有大约减少一半 即为 N 点 DFT 的 1/4 。 对于 N=8 时 DFT,N/4 点即为两点 DFT, 因此
0,1k ,)()(
0,1k ,)()(
0,1k ,)()(
0,1k ,)()(
4/
1
066
1
04/55
1
04/44
1
04/33
lkN
l
l
lkN
l
lkN
l
lkN
WlxkX
WlxkX
WlxkX
WlxkX
亦即 , )4()0()1()0()1(
)4()0()1()0()0(0
31233
03
0233
xWxxWxX
xWxxWxX
N
N
)6()2()1()0()1(
)6()2()1()0()0(0
41244
04
0244
xWxxWxX
xWxxWxX
N
N
)5()1()1()0()1(
)5()1()1()0()0(0
51255
05
0255
xWxxWxX
xWxxWxX
N
N
)7()3()1()0()1(
)7()3()1()0()0(0
61266
06
0266
xWxxWxX
xWxxWxX
N
N
(0) (4) (2) (6) (1) (5) (3) (7)
WN0
WN0
WN0
W 0N
-1
-1
-1
-1
X (0)
X (1)
X (0)
X (1)
X (0)
X (1)
X (0)
X (1)
3
3
4
4
5
5
6
6
WN0
WN2
WN0
WN2
-1
-1
-1
-1
X (0)
X (1)
X (2)
X (3)
X (0)
X (1)
X (2)
X (3)
1
1
1
2
1
2
2
2
W
W
W
W
N0
N1
N2
N3
-1
-1
-1
-1
X(0)
X(1)
X(2)
X(3)
X(4)
X(5)
X(6)
X(7)
xxxxxxxx
因此因此 ,,88 点点 DFTDFT 的的 FFTFFT 的运算流图如下的运算流图如下
这种 FFT 算法 , 是在时间上对输入序列 的次序是属于偶数还是属于奇数来进行分 解的 , 所以称作按时间抽取的算法 。
二 . 运算量 由上述分析可知 ,N=8 需三级蝶形运算 N=2 =8, 由此可知 ,N=2L 共需 L 级蝶形运算 , 而且每级都由 N/2 个蝶形运算 组成 , 每个蝶 形运算有一次复乘 , 两次复加。
(DIT)
3
因此 ,N 点的 FFT 的运算量为复乘 : mF = ( N/2 ) L= ( N/2 ) log2 N复加 : aF =N L=N log2 N 由于计算机的乘法运算比加法运算所 需的时间多得多,故以乘法作为比较基准。
(0)=X0(0) X1(0) X2(0) X3(0)=X(0) (4)=X0(1) X1(1) X2(1) X3(1)=X(1) (2)=X0(2) X3(2)=X(2) (6)=X0(3) X3(3)=X(3) (1)=X0(4) X1(4) X2(4) X3(4)=X(4) (5)=X0(5) X3(5)=X(5) (3)=X0(6) X3(6)=X(6) (7)=X0(7) X1(7) X2(7) X3(7)=X(7)
W
W
W
W
N0
N0
N0
N0
-1
-1
-1
-1
W
W
W
W
N0
N2
N0
N2
-1
-1
-1
-1
W
W
W
WN
N
N
N0
1
2
3
.
.
.
.
.
.
.
.
.
.
.
3.5.3 3.5.3 基于基于 DIT 的 FFT 算法的特点 1. 原位运算
输入数据、中间运算结果和最后输出均用同一存储器。xxxxxxxx
r
Nmmm
rNmmm
WjXkXjX
WjXkXkX
)()()(
)()()(
11
11
),3()6(),2()2(),1()4(),0()0(
0
0
0
0
XxXxXxXx
).7()7(),6()3(),5()5(),4()1(
0
0
0
0
XxXxXxXx
设用 m(m=1,2,… ,L) 表示第 m 列 ; 用 k,j 表示蝶形输入数据所在的(上 / 下)行数 (0,1,2,… ,N-1);这时任何一个蝶形运算可用下面通用式表示, 即
由运算流图可知 , 一共有 N 个输入 / 出行 ,一共有 log2 N=L 列(级)蝶形运算 ( 基本迭代运算 ).
所以 , 当 m=1 时 , 则有(前两个蝶形)
0001
0001
)1()0()1(
)1()0()0(
N
N
WXXX
WXXX
0001
0001
)3()2()3(
)3()2()2(
N
N
WXXX
WXXX
当 m=2 时 , 则有(前两个蝶形) 当 m=3 时 , 则有(前两个蝶形)
2112
2112
0112
0112
)3()1()3(
)3()1()1(
)2()0()2(
)2()0()0(
N
N
N
N
WXXX
WXXX
WXXX
WXXX
1223
1223
0223
0223
)5()1()5(
)5()1()1(
)4()0()4(
)4()0()0(
N
N
N
N
WXXX
WXXX
WXXX
WXXX
可见 , 在某列进行蝶形运算的任意两个节点 ( 行 )k 和 j 的节点变量 就完全可以确定蝶形运算的结果 , 与其它行 ( 节点 ) 无关。 这样 , 蝶形运算的两个输出值仍可放回蝶形运算的两个输入所在的存储器中 , 即实现所谓原位运算。每一组( 列 ) 有 N/2 个蝶形运算 , 所以只需 N 个存储单元,可以节 省存储单元。
)(),( jXkX mm
)(),( 11 jXkX mm
2 倒位序规律 由图可知 , 输出 X(k) 按正常顺序排列在存储单元 , 而输入是按顺序 :
这种顺序称作倒位序 , 即二进制数倒位。
);); 7(),3(),5(),1(6(),2(),4(),0( xxxxxxxx
n =00
n =10
n =01
n =11
n =01
n =11
01
0
1
01
0
1
),,( 012 nnnx
(n2)
x(000) 0
x(100) 4
x(010) 2
x(110) 6
x(001) 1
x(101) 5
x(011) 3
x(111) 7
(偶)
(奇)
这是由奇偶分组造成的 , 以 N=8 为例 说明如下 :
3. 倒位序实现 输入序列先按自然顺序存入存储单元 , 然后经变址运算来实现倒位序排列。设输入序列的序号为 n, 二进制为 (n2 n1 n0 )2 , 倒位序顺序用 表示 , 其倒位序二进制为 (n0 n1 n2 )2 , 例如 ,N=8 时如下表:
n̂
0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 4 2 0 1 0 0 1 0 2 3 0 1 1 1 1 0 6 4 1 0 0 0 0 1 1 5 1 0 1 1 0 1 5 6 1 1 0 0 1 1 3 7 1 1 1 1 1 1 7
自然顺序 n 二进制 n n n 倒位序二进制 n n n 倒位顺序 n^2 1 0 0 1 2
A(1) A(2) A(3) A(4) A(5) A(6) A(7) A(8)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)
变址处理方法存储单元自然顺序
变址倒位序4. 蝶形运算两节点的距离 :2m-1
其中 ,m 表示第 m 列 , 且 m =1,… ,L 例如 N=8=23 , 第一级 ( 列 ) 距离为 21-1=1, 第二级 ( 列 ) 距离为 22-1=2 , 第三级 ( 列 ) 距离为 23-1=4 。
5.WNr 的确定 ( 仅给出方法 ) 考虑蝶形运算两节点的距离为 2m-1 , 蝶 形运算可表为 Xm(k)=Xm-1(k)+Xm-1(k+2m-1)WNr Xm(k+2m-1)=Xm-1(k)-Xm-1(k+2m-1)WNr 由于 N 为已知 , 所以将 r 的值确定即可。
为此,令 k=(n2n1n0)2 , 再将 k= (n2n1n0)2 左移 (M-m) 位 , 右边位置补零 , 就可得到(r)2 的值,即 (r)2 =(k)2 2L-m 。
例如 N=8=23 (1)k=2 , m=3 的 r 值 ,∵k=2=(010)2 左移 M-m=3-3=0 ,∴ r=(010)2=2; (2)k=3 ,m=3 的 r 值 ; k= 3=(011)
2, 左移 0 位 ,r=3 ; (3)k=5 ,m=2 的值 ; k=5=(101)2 左移 M-m=1 位 r=(010)2 =2 。
6. 存储单元 存输入序列 (n),n=0,1, ,N-1, 需 N 个单元 ; 存放系数 , r=0,1, , ( N/2 ) -1, 需 N/2 个存储单元; 共计 (N+N/2) 个存储单元。
x
rNW
§3.5.4 频率抽取 FFT 算法 ( 桑德—图基算法 ) 一 . 算法原理
1.N 点 DFT 的另一种表达形式
1
0
)()(N
n
nkNWnxkX
1
0
)(1
0
1
2/
1
0
22
2
2
)2
()(
)()(
NN
N
N
n
knN
n
nkN
N
Nn
nkN
n
nkN
WNnxWnx
WnxWnx
由于 故 因此 X(k) 可表为
nkN
n
kN WWNnxnx
NN
1
0
22)
2()(
, 12 jN eW
N kkN
N
W )1(2
nkN
n
k WNnxnxkXN
1
0
2
)2
()1()()(
1,,1,0 Nk
2.N 点 DFT 按 k 的奇偶分组可分为两个 N/2 的 DFT 当 k 为偶数 , 即 k=2r 时 ,(-1)k =1 ; 当 k 为奇数 , 即 k=2r+1 时 (-1)k =-1 。 这时 X(k) 可分为两部分:
nr
n
nrN
n
N
N
N
WNnxnx
WNnxnx
2
2
2
1
0
21
0
)2
()(
)2
()(
)2( rX
r 1,,1,0 2 Nr
k 为偶数时:
可见 , 上面两式均为 N/2 的 DFT 。
nr
n
nN
rnN
n
N
N
N
WWNnxnx
WNnxnxrX
2
2
2
1
0
)12(1
0
)2
()(
)2
()()12(
x x
k 为奇数时:
1,,1,0 2 Nr
-1
)2
()( Nnxnx
1,,1,0 2 Nn
nNWNnxnx
)
2()(
3. 蝶形运算进行如下碟形运算:和 )
2()( Nnxnx
nNW
)2
( Nnx
)(nx
-1-1-1-1
WWWW
NN
N
N
0
1
2
3
4.N=8 时 , 按 k 的奇偶分解过程 先蝶形运算,后 DFT:
)0(x)1(x
)5(x)4(x)3(x)2(x
)7(x)6(x
)0(X
)2(X
)6(X)1(X)3(X)5(X)7(X
)4(XDFT
N点2
DFT
N点
2
5.仿照 DIT 的方法 再将 N/2 点 DFT 按 k 的奇偶分解为两个N/4 点的 DFT, 如此进行下去 ,直至分解为2 点 DFT 。
(0) X(0) (1) X(4) (2) X(2) (3) X(6) (4) X(1) (5) X(5) (6) X(3) (7) X(7)
-1-1-1-1
WWWW
N
NN
N
0
1
2
3
-1-1
-1-1
WW
WW
NN
N
N
02
0
2
-1
-1
-1
-1
W
W
W
W
N
N
N
N
0
0
0
0
x
xx
x
x
x
x
x
例如 N=8 时 DIF 的 FFT 流图如下:
二 . 原位运算 每级 ( 列 ) 都是由 N/2 个蝶形运算构 成 , 即
-1 WN
r
r
Nmmm
mmm
WjXkXjX
jXkXkX
)]()([)(
)()()(
11
11
)(1 kX m
)(1 jX m
)()()( 11 jXkXkX mmm
rNmmm WjXkXjX )]()([)( 11
三 . 蝶形运算两节点的距离 一般公式为 2M-m =N/2m 例如 N=23 =8 : (1)m=1 时的距离为 8/2=4 ; (2)m=2 时的距离为 8/4=2; (3)m=3 时的距离为 8/8=1 。
r 的求法: k=(n2 n1 n0 ) , 左移 m-1 位 , 右边空出补零 ,得 (r)2 ,亦即 (r)2 =(k)2 2m-1 .例如 ,N=8:(1)m=1,k=2, k=(010)2 左移 0 位 ,(r)2=(010)2=2;(2)m=2,k=1, k=(001)2 左移 1 位 ,(r)2=(010)2=2;(3)m=2,k=5, k=(101)2 左移 1 位 ,(r)2=(010)2=2 .
rNmmmmm
mmmm
WNkXkXNkX
NkXkXkX
)]2
()([)2
(
)2
()()(
11
11
四 . 的计算 由于 DIF 蝶形运算的两节点的距离为 N/2m , 所以蝶形运算可表为:r
NW
1. 相同点 (1) 进行原位运算; (2) 运算量相同 , 均为( N/2) Log2N 次复乘 ,N Log2N 次复加。 2. 不同点 (1)DIT 输入为倒位序 , 输出为自然顺序; DIF 正好与此相反。但 DIT也有输入为自然顺序 , 输出为倒位序的情况。
五 .DIF 法与 DIT 法的异同
rNmmm WjXkXjX )()()( 11
rNmmm WjXkXkX )()()( 11 )(1 kX m
)(1 jX m rNW 1
(2)蝶形运算不同a.
(DIT)
用矩阵表示 )(kX m
)( jX m
rNW
rNW
)(1 kX m
)(1 jX m
=1
1
rNmmm WjXkXjX )]()([)( 11
)()()( 11 jXkXkX mmm )(1 kX m
)(1 jX mr
NW1
b.(DIF)
用矩阵表示 )(kX m
)( jX mr
NW rNW
)(1 kX m
)(1 jX m
=1 1
(3) 两种蝶形运算的关系 互为转置(矩阵);
将流图的所有支路方向都反向 ,交换输入和输出,即可得到另一种蝶形。
a.(DIT)
b.(DIF)r
NWr
NW
1 11
1
rNW
rNW
3.5.53.5.5 IFFT IFFT 算法算法一 . 稍微变动 FFT 程序和参数即可实现 IFFT
nkN
N
k
N
n
nkN
WkXN
kXIDFTnx
WnxnxDFTkX
1
0
1
0
)(1)()(
)()()(
比较两式可知 , 只要 DFT 的每个系数 换成 , 最后再乘以常数 1/N 就可以得到 IDFT的快速算法 --IFFT 。 另外 , 可以将常数 1/N 分配到每级运算中 ,∵ ,也就是每级蝶形运算均乘以 1/2 。
nkNW
nkNW
MMN
)21(
211
二 . 不改 (FFT)的程序直接实现 IFFT
nkN
N
k
N
k
nkN
WkXN
WkXN
nx
1
0
1
0
*
)(1
])(1[)(
)(1
)(1 1
0
kXDFTN
WkXN
nkN
N
k
)(nx因此,
BABAWW nkN
nkN ][,][
这就是说 , 先将 X(k) 取共轭 , 即将 X(k) 的虚部乘 -1 ,直接利用 FFT程序计算 DFT;然后再取一次共轭;最后再乘 1/N, 即得 (n) 。所以 FFT,IFFT 可用一个子程序。
x
3.7 FFT 的应用一 . 用 DFT 计算连续时间信号的傅氏变换可能造成的误差 1.混叠现象 为避免混叠 , 由抽样定理可知,须满足 其中 , 为抽样频率 ; 为信号的最高频率分量; 或者 其中 ,T 为抽样间隔。
hs ff 2sf hf
hs ffT
211
2.频谱泄漏 在实际应用中,通常将所观测的信号 限制在一定的时间间隔内 ,也就是说,在时域对信号进行截断操作 ,或 称作加时间窗 ,亦即用时间窗函数乘以信号 , 由卷积定理可知,时域相乘 ,频域为卷积 , 这就造成拖尾现象 , 称之为频谱泄漏 .
)(1 nx
0n
0
)(1 nx )(1jeX
n
)(2 nx
)(2jeX
n
)()( 21 nxnxny
jeY
3.栅栏效应 用 DFT 计算频谱时,只是知道为频率 的整数倍处的频谱。在两个谱线之间 的情况就不知道 , 这相当通过一个栅栏观察 景象一样,故称作栅栏效应。 补零点加大周期 ,可使 F 变小来提高 辨力,以减少栅栏效应。
pTF 1
pT
二、 DFT 与连续时间信号傅氏变换间相对数值的确定 1.连续时间非周期信号傅氏变换对
dejXtx
dtetxjX
tj
tj
21
)(
2. 连续时间周期信号傅氏级数变换对
k
tjk
T
T
tjk
p
ejkXtx
dtetxT
jkX p
p
0
0
0
2/
2/01
3.DFT 变换时 :
10,)(1)(
10,)()(
1
0
1
0
NnWkXN
nx
NkWnxkX
N
k
nkN
N
n
nkN
4. 用 DFT 计算非周期信号的傅氏变换 用 DFT 计算所得的频谱分量乘以 T , 就 等于频谱的正常幅度电平;用 IDFT 计算非周 期信号的傅氏反变换,再乘以 就得到所需 信号的正常幅度电平。所以 , 从时间到频率 , 再从频率到时间,整个过程总共乘了 幅度电平未受到影响。
sf
1 sfT
设
n
TdtnTt ,,
1
0
)(
)(
)()(
N
n
nTj
n
nTj
tj
enTxT
TenTx
dtetxjX
用 DFT 计算所得的频谱分量乘以 T 的理由:
)]([
)(
)()(
1
0
/2
1
0
/20
nxDFTT
enxT
enTxTjkX
N
n
Nknj
N
n
NfTjkn s
1,...1,0,,/2 00 NkkNf s又
000
0 ,,2
,2
kdNNFfF s
)]([
)(1
)(2
)(21)(
1
1
0
2
0
21
00
0
000
kXDFTf
ekjXN
f
ekjX
ejkXnTx
s
N
k
knN
j
s
knN
TfjN
k
k
nTjk
s
用 IDFT 计算非周期信号的傅氏反变换乘以 的理由 sf
dejXtx tj
21
5. 用 DFT 计算周期信号的傅氏级数 用 DFT 计算出的频谱分量乘以 1/N等于周期信号的频谱的正常幅度电平。而用IDFT 的计算结果乘以 N才等于周期信号正常幅度电平。
5.5. 线性卷积的线性卷积的 FFTFFT 算法算法一 . 线性卷积的长度 设一离散线性移不变系统的冲激响 应为 , 其输入信号为 . 其输出 为 .并且 的长度为 N2 点 , 的 长度为 N1 点 , 则:
)(nx)(nx)(nh
)(nh
)(ny)(nx )(nh
1
0
2
)()()()()(N
m
mnhmxnhnxny
)(ny
以实例说明:
0 1 2 3
12
3)(mx )(mh
0 1 2
1 1.。1
。
0 1
1 2 3)(mx
2 3
)( mh
)1( mh
3
0
0)()()0(m
mhmxy
3
0
1)1()()1(m
mhmxy。
。
0 1 2 3
)2( mh
)3( mh
。
0 1
1 2 3)(mx
2 3。
3
0
3)2()()2(m
mhmxy
3
0
6)3()()3(m
mhmxy
0 1 2 3 4
0 1 2 3 4 5
)4( mh
)5( mh
0 1
1 2 3)(mx
2 3
。
。
3
0
5)4()()4(m
mhmxy
3
0
3)5()()5(m
mhmxy
0 1 2 3 4 5
13 3
56
6
)(ny
1)( 21 NNny 的长度为可见,
。
二 . 用 FFT 算 的步骤:
)(ny
;1)(),(.1 21 点补零点,至少为将 NNNnhnx ;求 )()(.2 nhFFTkH
;求 )()(.3 nxFFTkX ;求 )()()(.4 kHkXkY
。求 )()(.5 kYIFFTny
FFT
FFT
IFFT×
x(n)
h(n)
y(n)
X(k)
H(k)
Y(k)
流程图
L
L L
L
L L
L
LL