300 likes | 454 Views
第 4 章 快速傅氏变换 FFT. 数字信号处理多媒体教学系统 版权所有: yuning 2003 。 3 第 2 版. 数字信号处理. 快速傅立叶变换 FFT 是 DFT 计算的高效、快速算法。. 1 、 问题的提出: 直接计算 DFT 的计算量:. 计算 DFT 的一个值 X(k) 需要进行 N 次复数乘法(包括与 1 相乘)和 N-1 次复数加法,一共要计算 N 个值,所以要进行 N 2 和 N(N-1) 次复数加法. 所以直接计算的计算量为 N 2 数量级,需要改进算法提高计算效率。.
E N D
第4章快速傅氏变换FFT 数字信号处理多媒体教学系统 版权所有:yuning 2003。3 第2版 数字信号处理
快速傅立叶变换FFT是DFT计算的高效、快速算法。快速傅立叶变换FFT是DFT计算的高效、快速算法。 1、问题的提出: 直接计算DFT的计算量:
计算DFT的一个值X(k)需要进行N次复数乘法(包括与1相乘)和N-1次复数加法,一共要计算N个值,所以要进行N2和N(N-1)次复数加法计算DFT的一个值X(k)需要进行N次复数乘法(包括与1相乘)和N-1次复数加法,一共要计算N个值,所以要进行N2和N(N-1)次复数加法
所以直接计算的计算量为N2数量级,需要改进算法提高计算效率。所以直接计算的计算量为N2数量级,需要改进算法提高计算效率。 1965年库利——图基发表DFT的快速算法FFT。使计算量降到(N/2)log2N。 计算量比较表
2、FFT算法的引入: (1)把长序列分解成短序列计算,然后再组合出结果。 (3)根据这两点提高计算效率的方法,提出了多种不同的算法。 如库利——图基算法(时间抽取基2FFT算法);桑德——图基算法(频率抽取基2FFT算法);WFTA算法(小N素数组合算法);CZT算法(线性调频Z变换算法);ZFFT算法(局部频谱细化算法)等等。
4.1 库利——图基算法(时间抽取基2FFT算法) 4.1.1 基本原理 为了便于分解,设序列的长度N为2的整数次方,N=2K。
基本蝶形运算 2点DFT运算
x[0] X[0] X[1] x[4] W0 x[2] X[2] W0 x[6] X[3] W0 W2 x[1] X[4] W0 x[5] W1 X[5] W0 W2 x[3] X[6] W0 W3 x[7] W0 W2 X[7] N = 8基2时间抽取,可得出如下计算流程图:
4.1.2 计算量和算法特点 如: 序号 n和混序号 用3位二进制数表示,它们互为反转。 (1)以碟形运算为基础进行组合计算,计算因子WK的指数K与运算所在的级数和组内位置有关。 (2)中间数据的存储,可采用原位存储法。即每次碟形运算的结果可以存储在原数据的同一个存储单元。这样在高速硬件实现时,可节省存储器。 (3)输入序列的混序。因为DFT输入序列是顺序采样的,所以在计算FFT 之前需要进行序列按混序要求排序。排序算法很多,较常用的计算混序号的方法有二进制序号反转算法。
n0 n1 n2 0 x(000) 0 x(100) 4 0 1 0 0 1 x(010) 2 x(110) 6 X(n2n1n0) 1 0 0 x(001) 1 x(101) 5 1 1 0 x(011) 3 x(111) 7 1 1 倒序重排的原理图--码位颠倒树状图(N=8) 首先将序列x(n)分为偶数取样和奇数取样,偶数项出现在上半部分,奇数项出现在下半部分,其实我们就可以通过考察样本标号的最低为二进值码n0,如果为0,就在上半部分,为1在下半部分。第二次分解按倒数第二位进行判断,逐次分解逐次判断直到全部判决完为止。
基本蝶形运算 2点DFT运算
x[0] X[0] x[1] X[4] W0 x[2] X[2] W0 x[3] X[6] W2 W0 x[4] X[1] W0 x[5] W1 X[5] W0 W2 x[6] X[3] W0 W3 x[7] X[7] W2 W0 N = 8基2频率抽取,可得出如下计算流程图:
4.2.2 计算量和算法特点 (1)以蝶形运算为基础进行组合计算,计算因子WK的指数K与运算所在的级数和组内位置有关。 (2)中间数据的存储,可采用原位存储法。即每次蝶形运算的结果可以存储在原数据的同一个存储单元。这样在高速硬件实现时,可节省存储器。 (3)输出序列为混序。因为DFT输出序列要求是顺序的,所以在计算FFT 之后需要进行序列按混序要求排序。输出序列混序与时间抽取方法的输入序列混序相同。所以排序算法相同。 两种FFT算法的计算量相同,计算过程也类似。所以,在实际应用中两种算法可以任意选用。FFT算法大大地减少了DFT的计算量,使计算机数字信号处理得以广泛应用。
4.3.1 FFT的实现方法: 抽样 A/D 窗口截断 FFT 频谱分析 抗混叠 滤波器 x(t) x[n] X[k] 4.3 FFT的实现方法与应用 (1)软件实现。用于各种多媒体系统。 (2)单片信号处理微机(DSP)实现。如著名的TMS320系列信号处理机。具有固化的FFT程序,计算1024点浮点数据只需2mS;128阶FIR数字滤波器可处理10MHz的信号。用于实时多媒体系统,如可视电话,语言识别系统等。 (3)阵列处理机实现。如信号处理阵列机;并行处理机等。用于大型图象信号处理,如气象卫星云图处理等。 4.3.2 FFT的应用 1、信号的频谱分析: 主要误差的处理:混叠误差(抗混叠滤波,提高采样频率);泄漏误差(窗口函数的修正);栅栏效应(采样点数N的选定,延长采样时间t=NT)。 A/D变换器的精度要求要根据实际情况,使频谱X(k)满足分析要求。
|H(k)| tp -fs/2 fs/2 例:某FFT信号分析处理器采样频率为 5.12KHz。为了便于计算,取信号数据点数N是2的整数次方。问该处理器信号分析的频率范围是多少?若信号分析要求频谱的分辨率达10Hz,求信号采样持续时间至少为多长?信号数据点数应为多少?
2、快速卷积 FFT 计算(快速算法): 一般应用中,有M >> N。这时,可以采用分段计算方法,进一步减少计算量。 分段计算,可以用重叠相加法和重叠保留法。
4.4 线性调频Z变换算法 DFT频谱是序列的Z变换在单位圆上的等间隔取样。但在一些应用中,需要计算某一段范围的较密集取样点的频谱;或非等间隔取样点的频谱;甚至可能要求频谱的取样点不在单位圆上,而在某一条螺旋线上。对于这样一些频谱计算要求,DFT计算无法满足。在这些情况下,采用线性调频Z变换算法(Chirp Z Trasnation CZT)是很有效的。 4.4.1 CZT算法的基本原理
(M-1) Z1 Z2 Z0 θ0 ZM-1 A0 Re 1.0
4.5 实数序列的FFT高效算法和高效卷积: 4.5.1实数序列的FFT高效算法 FFT计算为复数运算,所以输入序列 x(n)在运算时可以为复数数据。如果是实序列一般是把虚部置0。如果利用虚部数据可以提高计算效率。 所以,通过组合后计算一次N点FFT可以得出2个N点实数序列的DFT频谱。
计算2N点的实序列 如果希望计算2N点实数序列的FFT,也可以采用组合方法提高计算效率。 将2N点的实序列分成两个N点实序列(按偶数项和奇数项分组),在组合成复数序列进行FFT运算。 即一个2N点的实序列的DFT可以用N点的FFT实现。
4.5.2 实数序列的FFT高效卷积算法 高效卷积可用于:一次快速卷积可计算两个信号分别输入一个LTI系统的两个输出;或一个信号分别输入两个LTI系统的输出。用于分段卷积可以一次计算两个分段。
结 束 数字信号处理多媒体教学系统 版权所有:yuning 2003。3 第2版