第03章-5 快速傅里叶变换(FFT)
- 格式:ppt
- 大小:1.99 MB
- 文档页数:37
⽂中内容均为个⼈理解,如有错误请指出,不胜感激前⾔先解释⼏个⽐较容易混淆的缩写吧FMT 快速莫⽐乌斯变化—>感谢stump提供多项式复数在介绍复数之前,⾸先介绍⼀些可能会⽤到的东西(好像画的不是很标准。
)定义设a ,b 为实数,i 2=−1,形如a +bi 的数叫复数,其中i 被称为虚数单位,复数域是⽬前已知最⼤的域在复平⾯中,x 代表实数,y 轴(除原点外的点)代表虚数,从原点(0,0)到(a ,b )的向量表⽰复数a +bi模长:从原点(0,0)到点(a ,b )的距离,即√a 2+b 2幅⾓:假设以逆时针为正⽅向,从x 轴正半轴到已知向量的转⾓的有向⾓叫做幅⾓运算法则加法:因为在复平⾯中,复数可以被表⽰为向量,因此复数的加法与向量的加法相同,都满⾜平⾏四边形定则(就是上⾯那个)乘法:⼏何定义:复数相乘,模长相乘,幅⾓相加代数定义:(a +bi )∗(c +di )=ac +adi +bci +bdi 2=ac +adi +bci −bd=(ac −bd )+(bc +ad )i单位根下⽂中,默认n 为2的正整数次幂在复平⾯上,以原点为圆⼼,1为半径作圆,所得的圆叫单位圆。
以圆点为起点,圆的n 等分点为终点,做n 个向量,设幅⾓为正且最⼩的向量对应的复数为ωn ,称为n 次单位根。
根据复数乘法的运算法则,其余n −1个复数为ω2n ,ω3n ,…,ωn n 注意ω0n =ωn n =1(对应复平⾯上以x 轴为正⽅向的向量)那么如何计算它们的值呢?这个问题可以由欧拉公式解决ωk n =cos k ∗2πn +i sin k ∗2πn例如图中向量AB 表⽰的复数为8次单位根单位根的幅⾓为周⾓的1n在代数中,若z n =1,我们把z 称为n 次单位根单位根的性质ωk n =cos k2πn +i sin k 2πn (即上⾯的公式)ω2k 2n =ωk n证明:ω2k 2n =cos2k ∗2π2n +i sin2k ∗2π2n =ωk nωk +n2n =−ωk n ωn2n =cos n 2∗2πn +i sin n 2∗2πn =cos π+i sin π=−1ω0n =ωn n =1讲了这么多,貌似跟我们的正题没啥关系啊。
快速傅里叶变换[编辑]维基百科,自由的百科全书跳转至:导航、搜索傅里叶变换Z变换傅里叶级数傅里叶变换离散傅里叶级数离散时间傅里叶变换离散傅里叶变换快速傅里叶变换分数傅里叶变换短时距傅立叶变换小波变换离散小波变换连续小波变换快速傅里叶变换(英语:Fast Fourier Transform, FFT),是离散傅里叶变换的快速算法,也可用于计算离散傅里叶变换的逆变换。
快速傅里叶变换有广泛的应用,如数字信号处理、计算大整数乘法、求解偏微分方程等等。
本条目只描述各种快速算法。
对于复数序列,离散傅里叶变换公式为:直接变换的计算复杂度是(参见大O符号)。
快速傅里叶变换可以计算出与直接计算相同的结果,但只需要的计算复杂度。
通常,快速算法要求n能被因数分解,但不是所有的快速傅里叶变换都要求n是合数,对于所有的整数n,都存在复杂度为的快速算法。
除了指数的符号相反、并多了一个1/n的因子,离散傅里叶变换的正变换与逆变换具有相同的形式。
因此所有的离散傅里叶变换的快速算法同时适用于正逆变换。
目录[隐藏]∙ 1 一般的简化理论∙ 2 快速傅里叶变换乘法量的计算∙ 3 Cooley-Tukey算法o 3.1 设计思想∙ 4 其他算法∙ 5 实数或对称资料专用的算法∙ 6 复杂度以及运算量的极限∙7 参考资料∙8 参阅一般的简化理论[编辑]假设一个M*N Sub-rectangular matrix S可分解成列向量以及行向量相乘:若有个相异的non-trivialvalues( where )有个相异的non-trivial values则S共需要个乘法。
Step 1:Step 2:简化理论的变型:也是一个M*N的矩阵。
若有个值不等于0,则的乘法量上限为。
快速傅里叶变换乘法量的计算[编辑]假设,其中彼此互质点DFT的乘法量为,则点DFT的乘法量为:假设,P是一个质数。
若点的DFT需要的乘法量为且当中 () 有个值不为及的倍数,有个值为及的倍数,但不为的倍数,则N点DFT的乘法量为:Cooley-Tukey算法[编辑]主条目:Cooley-Tukey快速傅里叶变换算法Cooley-Tukey算法是最常见的FFT算法。
FFT 快速傅里叶变换(Fast Fourier Transform) 是一种用于快速计算傅里叶变换的算法,是在傅里叶变换的基础上发展而来的。
FFT 算法被广泛应用于数字信号处理、图像处理、声音处理、卷积操作、解析几何等领域,它的高效性和实时性使得它成为了当今计算机科学领域不可或缺的一部分。
一、傅里叶变换简介傅里叶变换是将一个时域信号转换为频域信号的过程,其公式如下:$F(\omega)=\int_{-\infty}^{\infty}f(t)e^{-i\omega t}dt$其中,$f(t)$ 表示时域信号,$F(\omega)$ 表示频域信号,$\omega$ 表示角频率。
傅里叶变换可以分为连续傅里叶变换和离散傅里叶变换两种。
连续傅里叶变换仅适用于连续信号,而离散傅里叶变换适用于离散信号。
二、离散傅里叶变换离散傅里叶变换是一种将离散信号变换为频域信号的方法,其公式如下:$X_k=\sum_{n=0}^{N-1}x_n e^{-\frac{2\pi i}{N}kn},k=0,1,...,N-1$其中,$x_n(n=0,1,...,N-1)$ 表示原始离散信号,$X_k(k=0,1,...,N-1)$ 表示变换后的频域信号。
但是,使用该公式直接计算离散傅里叶变换的时间复杂度为$O(N^2)$,计算效率低下。
三、FFT 快速傅里叶变换FFT 快速傅里叶变换是一种基于DFT 离散傅里叶变换的高效算法,它的时间复杂度可以达到$O(NlogN)$,较之直接计算DFT 的时间复杂度要低得多。
FFT 算法的基本思想是将 DFT 分治成多个较小的 DFT,并利用其重复性降低运算次数。
1.蝴蝶运算蝴蝶运算是 FFT 算法的基本运算,通过它可以将 DFT 的计算复杂度降低为 $O(N)$。
蝴蝶运算的实质是将两个相邻点之间的信号进行乘法和加法运算,其公式如下:$X_k=X_{k1}+W_{N}^kX_{k2},X_{k+N/2}=X_{k1}-W_{N}^kX_{k2}$其中,$X_{k1}$ 表示 $X_k$ 中偶数项,$X_{k2}$ 表示 $X_k$ 中奇数项,$W_N$ 是DFT 的核函数。
快速傅立叶变换(FFT)快速傅立叶变换(FFT)4.1引言快速傅立叶变换(FFT)并不是一种新的变换,而是离散傅立叶变换(DFT)的一种快速算法。
DFT的计算在数字信号处理中非常有用。
例如在FIR滤波器设计中会遇到从h(n)求H(k)或由H(k)计算h(n),这就要计算DFT;信号的谱分析对通信、图像传输、雷达等都是很重要的,也要计算DFT。
因直接计算DFT的计算量与变换区间长度N的平方成正比,当N较大时,计算量太大。
自从1965年图基(J. W. Tukey)和库利(T. W. Coody)在《计算数学》(Math. Computation , Vol. 19, 1965)杂志上发表了著名的《机器计算傅立叶级数的一种算法》论文后,桑德(G. Sand)-图基等快速算法相继出现,又经人们进行改进,很快形成一套高效运算方法,这就是快速傅立叶变换简称FFT(Fast Fourier Transform)。
这种算法使DFT的运算效率提高1~2个数量级。
4.2 基2 FFT算法一、直接计算DFT的问题及改进的途径设x(n)为N点有限长序列,其DFT正变换为= , k=0,1,…,N-1其反变换(IDFT)x(n)= ,n=0,1,…,N-1二者的差别只在于的指数符号不同,以及差一个常数乘因子1/N,因而下面我们只讨论DFT正变换的运算量,反变换的运算量是完全相同的。
考虑x(n)为复数序列的一般情况,每计算一个X(k),需要N次复数乘法以及(N-1)次复数加法。
因此,对所有N个k值,共需N2次复数乘法及N(N-1)次复数加法运算。
所以直接计算DFT,乘法次数和加法次数都是和N2成正比的,当N很大时,运算量是很可观的,因而需要改进对DFT的计算方法,以减少运算次数。
下面讨论减少运算工作量的途径。
仔细观察DFT的运算就可看出,利用系数以下固有特性,就可减小DFT的运算量:(1)的对称性()*=(2)的周期性 ==(3)的可约性 ==由此可得:==,=-1,=-。
快速傅里叶变换[编辑]维基百科,自由的百科全书跳转至:导航、搜索傅里叶变换Z变换傅里叶级数傅里叶变换离散傅里叶级数离散时间傅里叶变换离散傅里叶变换快速傅里叶变换分数傅里叶变换短时距傅立叶变换小波变换离散小波变换连续小波变换快速傅里叶变换(英语:Fast Fourier Transform, FFT),是离散傅里叶变换的快速算法,也可用于计算离散傅里叶变换的逆变换。
快速傅里叶变换有广泛的应用,如数字信号处理、计算大整数乘法、求解偏微分方程等等。
本条目只描述各种快速算法。
对于复数序列,离散傅里叶变换公式为:直接变换的计算复杂度是(参见大O符号)。
快速傅里叶变换可以计算出与直接计算相同的结果,但只需要的计算复杂度。
通常,快速算法要求n能被因数分解,但不是所有的快速傅里叶变换都要求n是合数,对于所有的整数n,都存在复杂度为的快速算法。
除了指数的符号相反、并多了一个1/n的因子,离散傅里叶变换的正变换与逆变换具有相同的形式。
因此所有的离散傅里叶变换的快速算法同时适用于正逆变换。
目录[隐藏]• 1 一般的简化理论• 2 快速傅里叶变换乘法量的计算• 3 Cooley-Tukey算法o 3.1 设计思想• 4 其他算法• 5 实数或对称资料专用的算法• 6 复杂度以及运算量的极限•7 参考资料•8 参阅一般的简化理论[编辑]假设一个M*N Sub-rectangular matrix S可分解成列向量以及行向量相乘:若有个相异的non-trivialvalues( where )有个相异的non-trivial values则S共需要个乘法。
Step 1:Step 2:简化理论的变型:也是一个M*N的矩阵。
若有个值不等于0,则的乘法量上限为。
快速傅里叶变换乘法量的计算[编辑]假设,其中彼此互质点DFT的乘法量为,则点DFT的乘法量为:假设,P是一个质数。
若点的DFT需要的乘法量为且当中 ()有个值不为及的倍数,有个值为及的倍数,但不为的倍数,则N点DFT的乘法量为:Cooley-Tukey算法[编辑]主条目:Cooley-Tukey快速傅里叶变换算法Cooley-Tukey算法是最常见的FFT算法。