第三章第三节快速傅里叶变换(FFT).
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
将2点DFT的信号流程图移入图3.17,得到图3.19所示的8点 时间抽选的完整的FFT流程图。
返回
从图3.19中可看出几个特点: (1)流程图的每一级的基本计算单元都是一个蝶形; (2)输入x(n)不按自然顺序排列,称为“混序”排列,而输出 X(k)按 自然顺序排列,称为“正序”排列,因而要对输入进行“变址”; (3)由于流程图的基本运算单元为蝶形,所以可以进行“同址”或 “原位”计算。
(3.64)
按照规则(2),将X(k)分成前后两组,即 由(3.64)表示的是N/2点DFT,前4个k值的DFT可表示为
后4个k值的X(k)表示为:
因为
所以
(3.65)
(3.ห้องสมุดไป่ตู้6)
按照式(3.65)和式(3.66)可画出图3.15所示的信号流程图。
式(3.65)和式(3.66)把原来N点DFT的计算分解成两个N/2点DFT的计 算。照此可进一 步把每个N/2点DFT的计算再各分解成两个N/4点 DFT的计算。具体说来,是把{x(0),x(2),x(4),x(6)}和{x(1),x(3), x(5),x(7)}分为{x(0),x(4) | x(2),x(6)}和{x(1),x(5) | x(3),x(7)}。这样, 原信号序列被分成{x(0),x(4) | x(2),x(6) I x(1),x(5) I x(3),x(7)}4个2项 信号。G(k)和H(k)分别计算如下:
第二类称为按频率抽取(Decimation-in-Frequency)的基2FFT算法, 在这类算法中是将离散傅里叶变换系数序列X(k)分解为较短的 子序列。
前面两种算法特别适用于N等于2的幂的情况。 对于N为合数的情况,本章也将介绍两种处理方法。
时间抽选基2FFT算法(库里—图基算法) 这种算法简称为时间抽选FFT算法,其基本出发点是,利用旋 转因子WNk的对称性和周期性,将一个大的DFT分解成一些逐次 变小的DFT来计算。 分解过程遵循两条规则:
FFT算法主要利用了WNk的两个性质: (1)对称性,即 (2)周期性,即
r为任意整数。
FFT算法是基于可以将一个长度为N的序列的离散傅里叶变换 逐次分解为较短的离散傅里叶变换来计算这一基本原理的。这 一原理产生了许多不同的算法,但它们在计算速度上均取得了 大致相当的改善。
第一类 称为按时间抽取(Decimation-in-Time)的基2FFT算法,它 的命名来自如下事实:在把原计算安排成较短变换的过程中, 序列x(n)(通常看作是一个时间序列)可逐次分解为较短的子序列。
蝶形、同址和变址计算 1. 蝶形计算
任何一个N为2的整数幂(即N=2M)的DFT,都可以通过M次分解,最 后成为2点的 DFT来计算。M次分解构成了从x(n)到X(k)的M级迭代计 算,每级由N/2个蝶形组成。图3.20表示了蝶形的一般形式表示。 其输入和输出之间满足下列关系:
从上式可以看出完成一个蝶形计 算需一次复数乘法和两次复数加法。 因此,完成N点的时间抽选FFT计 算的总运算量为
大多数情况下复数乘法所花的时间最多,因此下面仅以复数乘 法的计算次数为例来与直接计算进行比较。
直接计算DFT需要的乘法次数为αD=N2,于是有
例如,当N=1024时,则:
205,即直接计算DFT所需复数乘法
次数约为FFT的205倍。显然,N越大,FFT的速度优势越大。
表3. 2列出了不同N值所对应的两种计算方法的复数乘法次数和 它们的比值。
2.同址(原位)计算
图3. 19包含log2N级迭代运算,每级由N/2个蝶形计算构成。蝶形计 算的优点是可以进行所谓同址或原位计算。
现在来考察第一级的计算规律。设将输入x(0),x(4),x(2),x(6), x(1),x(5),x(3),x(7)分别存入计算机的存储单元M(1), M(2), M(3),…, M(7)和M(8)中。首先,存储单元M(1)和M(2)中的数据x(0)和x(4)进入运 算器并进行蝶形运算,流图中各蝶形的输入量或输出量是互不相 重的,任何一个蝶形的二个输入量经蝶形运算后,便失去了利用 价值,不再需要保存。这样,蝶形运算后的结果便可以送到M(1)和 M(2)存储起来。类似地,M(3)和M(4)中的x(2)和x(6)进入运算器进行蝶 形运算后的结果也被送回 到M(3)和M(4)保存,等等。第二级运算与 第一级类似,不过,M(1)和M(3)存储单元中的数 据进行蝶形运算后 的结果被送回M(1)和M(3)保存,M(2)和M(4)中的数据进行蝶形运算 后送回M(2)和M(4)保存,等等。这样一直到最后一级的最后一个蝶 形运算完成。
3.其它方法: 线性调频Z变换(Chrip-z法)
在导出FFT算法之前,首先来估计一下直接计算DFT所需的计算量。 DFT的定义
其中
将DFT定义式展开成方程组 将方程组写成矩阵形式 用向量表示
用复数表示:
从矩阵形式表示可以看出,由于计算一个X(k)值需要N次复乘法和 (N-1)次复数加法,因而计算N个X(k)值,共需N2次复乘法和N(N-1)次 复加法。每次复乘法包括4次实数乘法和2次实数加法,每次复加 法包括2次实数加法,因此计算N点的DFT共需要4N2次实数乘法和 (2N2+2N·(N-1))次实数加法。当N很大时,这是一个非常大的计算量。
第3章第三节 快速傅里叶变换 (FFT)
FFT算法分类:
1.按抽取方法分: 时间抽取法(DIT Decimation-In-Time); 频率抽取法(DIF Decimation-In-Frequency)
2.按“基数”分: 基-2FFT算法; 基-4FFT算法; 混合基FFT算法; 分裂基FFT算法
①对时间进行偶奇分解; ②对频率进行前后分解。 设N=2M,M为正整数。为了推导方便,取N=23=8,即离散时间 信号为
按照规则(1),将序列x(n)分为奇偶两组,一组序号为偶数,另一 组序号为奇数,即
分别表示为:
根据DFT的定义
因为 WN2=WN/21,所以上式变为 上式中的G(k)和H(k)都是N/2点的DFT。
(3.67)
(3.68)
(3.69)
(3.70) 这样,用式(3.67)~(3.70)4个公式就可计算图3.15中的两组N/2点 DFT。图3.16所示的是其中一组G(k)的计算。
将图3.16与图3.15所示的信号流程图合并,便得到图3.17所示的信 号流程图。
因为N=8,所以上图中N/4点的DFT就是2点的DFT,不能再分解了。