第4章快速傅里叶变换FFT

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

4.2.4 DIT-FFT 的运算规律及编程思想 显而易见,只要将顺序数(n2n1n0)的二进制位倒置,则得 对应的二进制倒序值(n0n1n2)
4.2.4 DIT-FFT 的运算规律及编程思想
4、编程思想及程序框图 先从输入端(第1级)开 始,逐级进行,共进行M 级运算。在进行第L级运 算时,依次求出B个不同 的旋转因子,每求出一个 旋转因子,就计算完它对 应的所有2M-L个蝶形。 这样,我们可用三重循 环程序实现DIT-FFT运算
图4.2.6 DIT-FFT运算和程序框图
图:蝶形运算符号 完成一个蝶形运算需要一次复数乘和两次复数加法运算
4.2.2 时域抽取法基2FFT基本原理
基2 DIT-FFT算法基本原理
图4.2.2 8点DFT一次时域抽取分解运算流图
4.2.2 时域抽取法基2FFT基本原理
分解后运算量: 复数乘法 一个N/2点DFT (N/2)2 两个N/2点DFT N2/2 一个蝶形 N/2个蝶形 总计 复数加法 N/2 (N/2 –1) N (N/2 –1) 2 N
2、旋转因子的变化规律 N点DIT-FFT运算流图中,每级都有N/2个蝶形。每个蝶形都 要乘以因子 WNp ,称其为旋转因子,p为旋转因子的指数 但各级的旋转因子和循环方式都有所不同,L表示从左到 右的运算级数(L=1,2,…,M) 旋转因子 WNp 与运算级数的关系: L级共有2L-1个不同的旋转因子
(W Nnk )* W N nk W N( N n ) k W Nn ( N k )
可约性
特殊点
k N / 2 W k WN N
Nk nk WN WN
mnk W Nnk WmN
nN nk WN WN
/m W Nnk W Nnk /m
4.2.4 DIT-FFT 的运算规律及编程思想
1、原位计算 DIT-FFT的运算过程很有规律。N=2M点的FFT共进行 M级运算,每级由N/2个蝶形运算组成
经过M级运算后,原来存放输入 序列数据的N个存储单元(数组A) 中便依次存放X(k)的N个值 原位计算可节省大量内存,从而使设备成本降低
4.2.4 DIT-FFT 的运算规律及编程思想
第二次分解后,将N/2点DFT分wk.baidu.com2个N/4点DFT和N/4个蝶形运算
依次类推,经过M次分解,最后将N点DFT分解成2点DFT和M 级蝶形运算,而1点DFT就是时域序列本身
图4.2.3 8点DFT二次时域抽取分解运算流图
4.2.2 时域抽取法基2FFT基本原理
4.2.3 DIT-FFT 算法与直接计算DFT运算量的比较
4.2.4 DIT-FFT 的运算规律及编程思想
L 1时 WNp WNJ / 4 W2JL L 2时
J W J WNp WN /2 2L
J 0 J 0, 1 J 0, 1, 2, 3
L 3时 WNp WNJ W2JL
WNp W2J ,
L
J 0, 1, 2,
x 4(l ) x 1(2l 1)
x 3(l ) x 1(2l )
X 1 (k )
N / 4 1 l 0
l 0, 1,
N 1 4
x1 (2l )W
l 0
2 kl N /2

N / 4 1 l 0
k ( 2 l 1) x ( 2 l 1 ) W 1 N /2 N / 4 1 l 0 kl x ( l ) W 4 N /4
AL ( J ) AL1 ( J ) AL1 ( J B)WNp
AL ( J B) AL1 ( J ) AL1 ( J B)WNp
p J 2M L J 0,1,
, 2L1 1; L 1, 2,
,M
第L级中,每个蝶形的两个输入数据相距B=2L-1个点;每级 有B个不同的旋转因子;同一旋转因子对应着2M-L个蝶形
W
J 2 M L N
, 2L-1 1
2 L 2 M 2 LM N 2 LM
W W
p N J N 2 L M
J 0, 1, 2, 2 L 1 1
p J 2
M L
4.2.4 DIT-FFT 的运算规律及编程思想 3、蝶形运算规律 如果蝶形运算的两个输入数据相距B个点,应用原位计算, 则蝶形运算可表示成如下形式
2
2
2 kr N
2 kr WN e
N / 21
j
2π 2 kr N
e
j
2π kr N 2
kr WN /2
X 1 (k )

r 0
x1 (r )W
kr N /2
DFT[ x1 (r )]N
X 2 (k )

r 0
kr x2 (r )WN / 2 DFT[ x2 (r )]N
基2FFT算法
长度N满足N=2M(M为整数),若不满足将序列补零延长, 使其满足长度要求
本节主要介绍 1、FFT的基本思想
2、时域与频域抽取的基-2FFT算法
3、FFT程序实现
4.2.2 时域抽取法基2FFT基本原理
1、基2 DIT-FFT算法基本原理 设序列x(n)的长度为N,且满足N=2M,M为自然数。 按n的奇偶把x(n)分解为两个N/2点的子序列
N / 4 1
kl k x ( l ) W W 3 N /4 N /2 k N /2
X 3 (k ) W
X 3 (k )
N / 4 1 l 0
X 4 (k )
4
N k 0, 1, , 1 2
X 4 (k )
N / 4 1
x (l )W
3
kl N /4
DFT[ x3 (l )]N
第4章 快速傅里叶变换(FFT)
引言 基2FFT算法
主 要 内 容
进一步减少运算量的措施 其他快速算法简介
4.1 引言
问题
直接计算DFT的计算量与变换区间长度N的平方成正比,当N 较大时,计算量太大,直接用DFT算法进行谱分析和信号的实 时处理是不切实际的。 解决方法 自从1965年库利(T. W. Cooley)和图基(J. W. Tuky)在《计算数 学杂志上发表了著名的《机器计算傅里叶级数的一种算法》 论文,就形成现在的快速傅里叶变换(FFT)。 结果 FFT使DFT的运算效率提高了1 ~ 2个数量级,为数字信号处 理技术应用于各种信号的实时处理创造了条件,大大推动了 数字信号处理技术的发展。
4.2.2 时域抽取法基2FFT基本原理 FFT算法分类
按抽取方式 时域抽取法FFT(Decimation In Time FFT,简称DIT-FFT ) 频域抽取法FFT (Decimation In Frequency FFT,简称DIF-FFT) 按基数分
基2-FFT算法、基4-FFT算法、混合基FFT算法、分裂基FFT算法
N /2 1

N /2 1 r 0
x (r )W
2 kr N
W
k N
N /2 1

r 0
2 kr x2 (r )WN
4.2.2 时域抽取法基2FFT基本原理
X (k )
N /21 r 0
x (r )W
1
N / 2 1
2 kr N
k WN
N /21 r 0
x (r )W
直接计算DFT的计算量
4.2.3 DIT-FFT 算法与直接计算DFT运算量的比较
DIT-FFT算法比直接计算DFT的运算次数大大减少。例如, N=210=1024时
N2 1 048576 204.8 N 5120 lbN 2
图4.2.5 DIT-FFT算法与直接计算DFT 所需复数乘法次数的比较曲线
WNN /2 1
4.2.1 直接计算DFT的特点及减少运算量的基本途径 FFT算法思想
不断地把长序列的DFT分解成几个短序列的DFT,并利用旋 转因子的周期性和对称性来减少DFT的运算次数。
FFT: 并不是一种新的变换形式,只是 DFT 的一种快速算法并且根 据序列的分解和选取方法的不同而产生了FFT的多种算法。 FFT应用: 在离散傅里叶反变换、线性卷积、线性相关等方面
4
k X 2 (k ) X 5 (k ) WN / 2 X 6 (k ) N k X 2 k X 5 (k ) WN X ( k ) /2 6 4
k 0, 1, ,
N 1 4
4.2.2 时域抽取法基2FFT基本原理
4.2.2 时域抽取法基2FFT基本原理
2
X (k )
N /21

r 0
x1 (r )W
kr N /2
W
k N
N /21

r 0
x2 (r )WNkr/2
X 1 (k ) WNk X 2 (k )
k N
k 0,1,2,
WN
k N 2
, N -1
k WN
由于X1(k)和X2(k)均以N/2为周期
X (k ) X 1 (k ) W X 2 (k ),
4.2 基2FFT算法
4.2.1 直接计算DFT的特点及减少运算量的基本途径
有限长序列x(n)的N点DFT X (k ) x(n)WNkn
n 0 N 1
k 0, 1, , N 1
计算量
a jb c jd ac bd j ad cb
X (k N k ) X 1 ( k ) WN X 2 (k ), 2
N k 0, 1, , 1 2
k 0, 1, , N 1 2
4.2.2 时域抽取法基2FFT基本原理
X (k ) X 1 (k ) W X 2 (k ),
k N
N k 0, 1, , 1 2
4.2.1 直接计算DFT的特点及减少运算量的基本途径
改善途径
利用旋转因子的周期性、对称性、可约性
mlN WN e j 2π ( mlN ) N
周期性
e
j
2π m N
m WN
对称性
WN
2 j e N
W
m N
W
N m N
[W
N m * N
] W
m N
WN
m
N 2
m WN
4.2.4 DIT-FFT 的运算规律及编程思想 5、序列的倒序 DIT-FFT算法的输入序列的排序看起来似乎很乱,但仔 细分析就会发现这种倒序是很有规律的 由于N=2M,因此顺序数可用M位二进制数(nM-1nM-2…n1n0) 表示。M次偶奇时域抽选过程
图4.2.7 形成例序的树状图(N=23)
N N / 2 1 N N2 /2
运算量减少 了近一半
1 N/2
N2 /2 N /2 N2 /2
4.2.2 时域抽取法基2FFT基本原理
N=2M, N/2仍然是偶数,故可以对N/2点DFT再作进一步分解 将x1(r)按奇偶分解成两个N/4点的子序列x3(l)和x4(l),即
k 0, 1, , N 1 2
X (k
N k ) X 1 ( k ) WN X 2 (k ), 2
将N点DFT分解为两个N/2点DFT上式运算可用蝶形运算符号表示
A B C A+BC A-BC
X1(k) X2(k)
WNk
X1(k)+ WNkX2(k)
X1(k)WNkX2(k)

l 0
kl x4 (l )WN / 4 DFT[ x4 (l )]N
4
4.2.2 时域抽取法基2FFT基本原理
W
kN / 4 N /2
k WN /2
,k 0, 1, , N / 4 1 k X 1 (k N / 4) X 3 (k ) WN / 2 X 4 (k ) 用同样的方法 x5 (l ) x2 (2l ) N / 4 1 l 0, 1, x6 (l ) x2 (2l 1)
x1 (r ) x(2r )
x2 (r ) x(2r 1)
n 偶数
r 0 ,1,..., N / 2 1

X (k )


r 0
kn x(n)WN
n 奇数

kn x(n)WN
N /2 1
x(2r )W
1
2 kr N
k (2 r 1) x(2r 1)WN r 0
k X 1 (k ) X 3 (k ) WN / 2 X 4 (k )
X 5 (k ) X 6 (k )
N /4 1

l 0 l 0
kl x5 (l )WN /4 DFT[ x5 (l )]N
4
N /4 1

kl x6 (l )WN /4 DFT[ x6 (l )]N
相关文档
最新文档