第七讲 快速傅里叶变换 (FFT) Q&A 办公室: 手 机:

Slides:



Advertisements
Similar presentations
2 和 5 的倍数的特征 运动热身 怎样找一个数的倍数? 从小到大写出 2 的倍数( 10 个): 写出 5 的倍数( 6 个) 2 , 4 , 6 , 8 , 10 , 12 , 14 , 16 , 18 , 20 5 , 10 , 15 , 20 , 25 , 30.
Advertisements

2.8 函数的微分 1 微分的定义 2 微分的几何意义 3 微分公式与微分运算法则 4 微分在近似计算中的应用.
大学生创业实践.
信号与系统 第三章 傅里叶变换 东北大学 2017/2/27.
第3章 离散傅立叶变换 DFS DFS的性质 DFT DFT的性质 圆周卷积 利用DFT计算线性卷积 频率域抽样.
第五章 二次型. 第五章 二次型 知识点1---二次型及其矩阵表示 二次型的基本概念 1. 线性变换与合同矩阵 2.
一、二阶行列式的引入 用消元法解二元线性方程组. 一、二阶行列式的引入 用消元法解二元线性方程组.
第四章 快速付里叶变换(FFT) Fast Fourier Transforming
讲座: 快速离散傅立叶变换 本讲的教学内容 改进DFT计算的方法 按时间抽取的FFT算法(DIT FFT)
分式的乘除.
分数乘法.
第一章 绪论.
小学生游戏.
第5章 定积分及其应用 基本要求 5.1 定积分的概念与性质 5.2 微积分基本公式 5.3 定积分的换元积分法与分部积分法
第三节 函数的求导法则 一 函数的四则运算的微分法则 二 反函数的微分法则 三 复合函数的微分法则及微分 形式不变性 四 微分法小结.
实验二 FFT与DFT计算时间的比较及圆周卷积代替线性卷积的有效性实验
第三章 DFT 离散傅里叶变换.
第2章 Z变换 Z变换的定义与收敛域 Z反变换 系统的稳定性和H(z) 系统函数.
第二章 矩阵(matrix) 第8次课.
Fast Fourier Transforms
第二章 离散傅里叶变换 及其快速算法(8学时 )
辅导课程六.
元素替换法 ——行列式按行(列)展开(推论)
中国科学技术大学计算机科学与技术系 国家高性能计算中心(合肥) 2004年12月
Biomedical signal processing
动态规划(Dynamic Programming)
第一单元:小数乘法 整数乘法运算定律 推广到小数 湖北省武汉市江汉区北湖小学 宋 俊.
使用矩阵表示 最小生成树算法.
引言 1.DFT是信号分析与处理中的一种重要变换。 年,Cooley, Tukey《机器计算傅里叶级数的一种算法》
第三章 付里叶分析 离散付氏级数的数学解释(The Mathematical Explanation of DFS)
第四章习题.
顺序表的删除.
线 性 代 数 厦门大学线性代数教学组 2019年4月24日6时8分 / 45.
第四节 基--2按频率抽取的FFT算法Decimation-in-Frequency(DIF) (Sander-Tukey)
复习.
信号处理原理 F F T 实 验 张哲 沈阳广播电视大学.
成绩是怎么算出来的? 16级第一学期半期考试成绩 班级 姓名 语文 数学 英语 政治 历史 地理 物理 化学 生物 总分 1 张三1 115
2019/5/4 实验三 离散傅立叶变换的性质及应用 06:11:49.
第4章 快速傅立叶变换 问题的提出 解决问题的思路与方法 基2时间抽取FFT算法 基2时间抽取FFT算法的计算复杂度
正切函数的图象和性质 周期函数定义: 一般地,对于函数 (x),如果存在一个非零常数T,使得当x取定义域内的每一个值时,都有
§8.3 不变因子 一、行列式因子 二、不变因子.
§6.7 子空间的直和 一、直和的定义 二、直和的判定 三、多个子空间的直和.
第四章 第四节 函数图形的描绘 一、渐近线 二、图形描绘的步骤 三 、作图举例.
第三章 函数的微分学 第二节 导数的四则运算法则 一、导数的四则运算 二、偏导数的求法.
4) 若A可逆,则 也可逆, 证明: 所以.
多层循环 Private Sub Command1_Click() Dim i As Integer, j As Integer
第三章 DFT 离散傅里叶变换.
第七、八次实验要求.
2.2矩阵的代数运算.
静定结构位移计算 ——应用 主讲教师:戴萍.
第15讲 特征值与特征向量的性质 主要内容:特征值与特征向量的性质.
线 性 代 数 厦门大学线性代数教学组 2019年5月12日4时19分 / 45.
2019/5/21 实验一 离散傅立叶变换的性质及应用 实验报告上传到“作业提交”。 11:21:44.
§2 方阵的特征值与特征向量.
实验目的:掌握数据的顺序存储结构及它们在计算机中的操作。 实验内容:
基于列存储的RDF数据管理 朱敏
第8章 FFT设计 8.1 FFT的原理 8.2 FFT与蝶形运算 8.3 使用DSP Builder设计FFT
信号发生电路 -非正弦波发生电路.
定义5 把矩阵 A 的行换成同序数的列得到的矩阵,
第四章 快速傅里叶变换 §4-1 引言 频域分析:一种有效的工具 DFT: △ 问题:.
第四章 函数的 积分学 第七节 定积分的换元积分法     与分部积分法 一、定积分的换元积分法 二、定积分的分部积分法.
第三节 数量积 向量积 混合积 一、向量的数量积 二、向量的向量积 三、向量的混合积 四、小结 思考题.
第十七讲 密码执行(1).
使用Fragment 本讲大纲: 1、创建Fragment 2、在Activity中添加Fragment
苏教版五年级数学 上册 简便算法 高效课堂编写组 王合立.
§4.5 最大公因式的矩阵求法( Ⅱ ).
第二次课后作业答案 函数式编程和逻辑式编程
一元一次方程的解法(-).
第三章 图形的平移与旋转.
9.3多项式乘多项式.
Presentation transcript:

第七讲 快速傅里叶变换 (FFT) Q&A 办公室: 51971617 手 机:13466573224 手 机:13466573224 Email: tangzhyguo@163.com

本讲在分析直接计算DFT的特点的基础上介绍DFT的快速算法-快速傅里叶变换(FFT);同时简要介绍了FFT算法的发展历程;此外还要介绍FFT的两种最常用的算法--基于时间抽取的FFT(DIT:库利-图基算法)和基于频率抽取的FFT(DIF:桑德-图基算法)。

一、直接计算DFT存在的问题 N点序列x(n)的DFT变换定义为: 计算X(k)的运算量:需要N2次复数乘法,N(N-1)次复数加法。在N较大时计算量很大。 例如:N=1024时, 需要1,048,576次复数乘法, 即4,194,304次实数乘法

对于象雷达、通信、声纳等需要实时处理的信号,因为其运算量更大,所以无法满足信号处理的实时性要求。迫切需要有新的算法。 二、DFT运算的特点 实际上,DFT运算中包含有大量的重复运算。在WN 矩阵中,虽然其中有N2个元素,但由于WN的周期性,其中只有N个独立的值,即 ,且这N个值也有一些对称关系。总之,WN因子具有如下所述周期性及对称性:

1.对称性 2.周期性 由上述特性还可得出: 利用上述对称特性,可使DFT运算中有些项可以合并,这样,可使乘法次数减少大约一半;利用WN矩阵的对称性及周期性,可以将长序列的DFT分解为短序列的DFT,N越小,运算量能够减少。 例如,对于四点的DFT,直接计算需要16次复数乘法,根据上述特性可以有以下形式的算法:

则有: 第二列和第三列交换,则:

由此得出: 从上例可知,通过应用对称性和周期性,4点的DFT实际上只需要进行一次复数乘法。

三、FFT发展简介 FFT的实质:快速傅里叶变换(FFT)并不是一种新的变换,是为了改进和提高离散傅里叶变换(DFT)运算速度基于DFT运算特点而发展起来的DFT快速算法,其实质还是DFT。 FFT发展的原因:DFT是信号分析与处理中的一种重要变换,广泛应用于通信、图像处理、雷达及声纳等领域,由于其计算量与变换区间长度N的平方成正比,在N较大时,计算量很大,使得直接应用DFT进行实时处理信号是不现实的。

FFT的发展历程: 1965年,J. W. Cooley和J. W. Tukey巧妙应用DFT中W因子的周期性及对称性提出了最早的FFT,这是基于时间抽取的FFT。具有里程碑式的贡献(运算量缩短两个数量级) 1966年,G. Sand提出了基于频率抽取的FFT算法 1975年,Winogard提出WFTA法;1977年Kolha和Parks提出素因子算法(PFA) 1984年,P. Dohamel和H. Hollmann提出分裂基快速算法,进一步减少了计算量,提高了计算速度(目前最理想的算法)

FFT的各种算法 纵观FFT的发展历程,FFT算法分成两大类: (1) 针对N等于2的整数次幂的算法,如基2算法、基4算法、实因子算法和分裂基算法 (2)针对N不等于2的整数次幂的算法,其以Winograd为代表的一类算法(素因子法PFA、Winograd算法WFTA) 简要介绍库利-图基算法和桑得-图基算法

四、按时间抽取(DIT)的FFT--库利-图基算法 1.基本原理 设序列x(n)的长度为N,且满足N=2M,M为自然数,按n的奇偶将x(n)分解为两个N/2的子序列: x1(r)=x(2r), r=0,1,2,…,N/2-1 x2(r)=x(2r+1) r=0,1,2,…,N/2-1 则x(n)的DFT为:

因为 ,所以: 上式中X1(k)和X2(k)分别为x2(r)和x2(r)的N/2点DFT,即 由于X1(k)和X2(k)均以N/2为周期,且 ,以X(k)又可表示为:

即将一个N点的DFT分解成为两个N/2点的DFT。上述运算可用右下图来表示,称为蝶形运算符号。 从右图可知,要完成一个蝶形运算需要进行一次复数相乘和两次复数相加运算。

下图是N=8时的一个分解运算图。 从上图可知,经过一次分解后,计算一个N点的DFT共需要计算两个N/2点FFT和N/2个蝶形运算。

计算一个N/2点DFT需要(N/2)2复数乘和N/2(N/2-1)次复数加法。所以按刚才的方法计算N点DFT总的运算量为2(N/2)2+N/2=N(N+1)/2≈N2/2(N>>1时)复数次乘法和N(N/2-1)+2N/2=N2/2次复数加法运算。 由此可见,仅仅经过一次分解就能使运算量减少近一半! 因为N/2仍然是偶数,可以作进一步的分解: 与第一次分解相同,将x1(r)按奇偶分解成两个N/4 的子序列x3(l)和x4(l), 即:

则,X1(k)又可表示为: 同理,X3(k)和X4(k)的周期性和WN的对称性,到最后我们能够得到:

同理可得: 其中:

这样,又将N/2点的DFT分解为两个N/4点的DFT。依次类推,经过M-1次分解,最后将N点DFT分解成N/2个2点DFT。一个完整的8点DFT-FFT运算流图如下图所示。

2.运算量的比较 从上述分析过程可知,在N=2M时,每一级都由N/2个蝶形运算构成,即每级都需要N/2次复数乘和N次复数加,所以总的复数乘的次数为: 总的复数加的次数为: 直接计算时复数乘的次数为N2,加为N(N-1)次。当N>>1时, ,使运算量大大减少。

以N=1024为例,其运算量与直接计算的比例为: 即运算效率提高了200多倍。易知N越大,优越性越明显。另外,在N=2048时,直接运算需要3个小时,而采用FFT则只需不到一分钟就能完成! 3.DIT-FFT的运算规律 (1)原位计算

根据运算流图可知,DIT-FFT的运算很有规律。N=2M点的FFT共进行M级运算,每级运算有N/2个蝶形运算构成;同一级中,每个蝶形的两个输入数据只对计算本蝶形有用,并且每个蝶形的输入、输出数据节点又同在一条水平线上,这意味着计算完一个蝶形后所得数据可立即存入原输入数据所占用的存贮单元,这样,经过M级运算后,原来存放输入序列数据的N个存贮单元中并依次存放了X(k)的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 N -1 2 1 3 .

(2)旋转因子的变化规律 在每个蝶形的运算过程中,都要乘以因子 ,称其为旋转因子,p称为旋转因子指数。但各级的旋转因子和循环方式都有所不同。 旋转因子与运算级数有一定的关系,若用L表示运算级数,对于N=2M的一般情况,第L级的旋转因子为:

(3)倒位序规律 从运算流图可以看出,原位计算时,FFT的输出X(k)是按正常顺序排列在存储单元中,即按X(0),X(1),···,X(7)的顺序排列,但是这时输入x(n)都不是按自然顺序存储的,这看起来好象是“混乱无序”的,实际上是有规律的,我们称之为倒位序。 造成倒位序的原因是输入x(n)按标号n的偶奇的不断分组而造成。

x(0) x(4) x(2) x(6) x(1) x(5) x(3) x(7) 45 倒位序实现 输入序列先按自然顺序存入存储单元,然后经变址运算来实现倒位序排列,设输入序列的序号为n,二进制为(n2 n1 n0 )2 ,倒位序顺序用 表示,其倒位序二进制为(n0 n1 n2 )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) 变址处理方法 存储单元 自然顺序 变址 倒位序

例如 ,N=8时如下表: 自然顺序n 二进制n n n 倒位序二进制n n n 倒位顺序n ^ 2 1 0 0 1 2 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

4.蝶形运算两节点的距离:2m-1 其中,m表示第m列,且m =1,… ,L 例如N=8=23 ,第一级(列)距离为21-1=1, 第二级(列)距离为22-1=2, 第三级(列)距离为23-1=4。

五、按频率抽取(DIF)的FFT--桑德-图基算法 库利图基法是将输入序列按其顺序是奇数还是偶数来分解为越来越短的序列;桑德图基法是把输出序列X(k)按其顺序的偶奇来分解为越来越短的序列。 1.原理 设序列x(n)长度为N=2M,首先将x(n)前后对半分开,得到两个子序列,其DFT可表示为:

由于 故 因此 X(k)可表示为

2.N点DFT按k的奇偶分组可分为两个N/2的DFT 当k为偶数,即 k=2r时,(-1)k =1; 当k为奇数,即 k=2r+1 时 (-1)k =-1 。 这时 X(k) 可分为两部分: k为偶数时:

k为奇数时: 可见,上面两式均为N/2的DFT。

3.蝶形运算 -1

4.N=8时,按k的奇偶分解过程 先蝶形运算,后DFT: W N 1 2 3 -1 -1 -1 -1

再将N/2点DFT按k的奇偶分解为两个N/4点的DFT,如此进行下去,直至分解为2点DFT。 以下是8点的DIF-DFT流程: 5.仿照DIT的方法 再将N/2点DFT按k的奇偶分解为两个N/4点的DFT,如此进行下去,直至分解为2点DFT。 以下是8点的DIF-DFT流程: x(0) X(0) x(1) X(4) x(2) X(2) x(3) X(6) x(4) X(1) x(5) X(5) x(6) X(3) x(7) X(7) -1 W N 1 2 3

B.原位运算 每级(列)都是由N/2个蝶形运算构成,即 r -1 W N

C.蝶形运算两节点的距离 一般公式为2L-m =N/2m 例如 N=23 =8 : (1)m=1 时的距离为 8/2=4; (2)m=2 时的距离为 8/4=2; (3)m=3 时的距离为 8/8=1。

D.DIF法与DIT法的异同 1.相同点 (1)进行原位运算; (2)运算量相同,均为(N/2) Log2N次复乘、N Log2N次复加。 2.不同点 (1)DIT输入为倒位序,输出为自然顺序; DIF正好与此相反。但DIT也有输入为自然顺序,输出为倒位序的情况。

(2)蝶形运算不同 A.DIT 用矩阵表示 1 = 1

B.DIF 用矩阵表示 = 1

A. DIT B.DIF (3)两种蝶形运算的关系--互为转置(矩阵); 将流图的所有支路方向都反向,交换输入和输出,即可得到另一种蝶形。 1 1 1 1 将流图的所有支路方向都反向,交换输入和输出,即可得到另一种蝶形。

六、IDFT的快速算法--IFFT FFT算法,同样可以适用于离散博里叶反变换(IDFT)运算,并简称为IFFT,即快速博里叶反变换,从IDFT公式看: 而DFT公式 比较以上两式可知,只要把DFT运算中的每一个系数 换成 ,并且最后再乘以常数1/N, 则

以上所有时间抽取或频率抽取的FFT算法都可以拿来运算IDFT。 此外,有一种直接采用FFT程序计算IFFT的方法。 对 取共轭,则: 两边同时再取共轭,有:

上述情况表明:在进行IDFT运算的时候,可以先将X(k)取共轭,直接调用FFT子程序,然后再取共轭并乘以1/N就可得到序列x(n)。