FFT离散傅氏变换的快速算法
- 格式:docx
- 大小:11.61 KB
- 文档页数:6
第五章离散傅里叶变换及其快速算法1离散傅里叶变换(DFT)的推导(1)时域抽样:目的:解决信号的离散化问题。
效果:连续信号离散化使得信号的频谱被周期延拓。
⑵时域截断: 原因:工程上无法处理时间无限信号。
方法:通过窗函数(一般用矩形窗)对信号进行逐段截取。
结果:时域 乘以矩形脉冲信号,频域相当于和抽样函数卷积。
(3) 时域周期延拓:目的:要使频率离散,就要使时域变成周期信号。
方法:周期延拓中的搬移通过与 、:(t_nTs)的卷积来实现。
表示:延拓后的波形在数学上可表示为原始波形与冲激串序列的卷积。
结果:周期延拓后的周期函数具有离散谱。
经抽样、截断和延拓后,信号时域和频域都是离散、周期的。
过程见图▲t載曲后ft \ \ t \ f.............. ►t---------------- r fi0/1LL紹后-7ii t7V亍延拓・V 普义PFT「州-P TTnh图1 DFT 推导过程示意图〜00 ”N 4处理后信号的连续时间傅里叶变换:|~⑴虫ls h(nT 2o n=0「忆飞n/N-kfo)(i)l~(f)是离散函数,仅在离散频率点f 二kf 。
k —处存在冲激,强度为a k ,其To NTs余各点为0。
〜 N N 1(ii) H(f)是周期函数,周期为Nfo == I ,每个周期内有N 个不同的幅值。
To NTs Ts(iii)时域的离散时间间隔(或周期)与频域的周期(或离散间隔)互为倒数。
2 DFT 及IDFT 的定义(1) DFT 定义:设hnTs 是连续函数h(t)的N 个抽样值J ,这N 个点的宽度为N 的 DFT 为:DFT N h(nTs)]=A h(nTs)ej 2ffi /N =H ——J (k =0,1,..., N_1)7l NT s 丿IDFT 定义:设H 上是连续频率函数吧的N 个抽样值k 亠,…• N J ,这N 个点(NTs 丿 的宽度为N的IDFT 为:DFTN 1Hk_L7HLe 「2「伙/N 厶 门Ts,(k=0,1,…,N —1)|L NsN k 卫 NTs“Rk/N 称为N 点DFT 的变换核函数,龊讪称为N 点IDFT 的变换核函数。
FFT是离散傅立叶变换的快速算法离散傅立叶变换(Discrete Fourier Transform, DFT)是一种将离散信号变换到频域的方法,它在数字信号处理中有着广泛的应用。
然而,传统的DFT算法的计算复杂度为O(N^2),对于大规模的信号序列而言,计算时间会很长。
为了解决这个问题,FFt算法应运而生。
快速傅立叶变换(Fast Fourier Transform, FFT)是一种通过分治思想将DFT算法转化成更高效的计算方式。
FFT算法的核心思想是将一个长度为N的信号分解成N个长度为1的信号,然后逐步合并计算每个信号的频域表示,最终得到整个信号的频域表示。
FFT算法的时间复杂度为O(NlogN),大大提高了计算效率。
FFT算法的基本思想是基于蝶形运算和旋转因子的运用。
蝶形运算是指将两个频域采样值进行乘法和加法操作,然后得到两个新的频域采样值。
旋转因子是指用来调整频域采样的运算公式,可以通过旋转因子将频域采样值分解成两个较小规模的频域采样值。
通过不断地重复蝶形运算和旋转因子的运算,最终可以得到整个信号的频域表示。
在FFT算法中,需要注意的是将信号序列长度N转化为2的幂次方,这是因为FFT算法要求信号序列的长度必须是2的幂次方。
如果信号序列的长度不是2的幂次方,需要进行长度的补齐或者截断操作。
通过对信号序列进行补齐或者截断,可以避免频谱泄漏的问题,并且可以确保FFT算法的正确性。
FFT算法的具体实现通常采用递归或者迭代的方式。
递归实现的FFT算法主要是通过将整个信号序列分解成较小规模的子序列,然后对每个子序列进行FFT计算,最终得到整个信号的频域表示。
迭代实现的FFT算法则是通过依次计算每个蝶形运算的结果,从而得到整个信号的频域表示。
FFT算法在数字信号处理领域有着广泛的应用。
例如,它可以用于信号的滤波和去噪、信号的频谱分析和频率成分提取、图像处理中的边缘检测和特征提取等。
由于FFT算法具有高效的计算速度,尤其适合处理大规模信号序列,因此在实际应用中被广泛采用。
DFT 算法原理快速傅氏变换(FFT )是离散傅氏变换的快速算法,它是根据离散傅氏变换的奇、偶、虚、实等特性,对离散傅立叶变换的算法进行改进获得的。
它对傅氏变换的理论并没有新的发现,但是对于在计算机系统或者说数字系统中应用离散傅立叶变换,可以说是进了一大步。
设x(n)为N 项的复数序列,由DFT 变换,任一X (m )的计算都需要N 次复数乘法和N-1次复数加法,而一次复数乘法等于四次实数乘法和两次实数加法,一次复数加法等于两次实数加法,即使把一次复数乘法和一次复数加法定义成一次“运算”(四次实数乘法和四次实数加法),那么求出N 项复数序列的X (m ),即N 点DFT 变换大约就需要N2次运算。
当N=1024点甚至更多的时候,需要N2=1048576次运算,在FFT 中,利用WN 的周期性和对称性,把一个N 项序列(设N=2k,k 为正整数),分为两个N/2项的子序列,每个N/2点DFT 变换需要(N/2)2次运算,再用N 次运算把两个N/2点的DFT 变换组合成一个N 点的DFT 变换。
这样变换以后,总的运算次数就变成N+2(N/2)2=N+N2/2。
继续上面的例子,N=1024时,总的运算次数就变成了525312次,节省了大约50%的运算量。
而如果我们将这种“一分为二”的思想不断进行下去,直到分成两两一组的DFT 运算单元,那么N 点的DFT 变换就只需要Nlog2N 次的运算,N 在1024点时,运算量仅有10240次,是先前的直接算法的1%,点数越多,运算量的节约就越大,这就是FFT 的优越性。
、FFT的算法原理FFT 算法的输出X(K)为自然顺序,但为了适应原位计算,其输入序列不是按x(n)的自然顺序排序,这种经过M-1次奇偶抽选后的排序为序列的倒序。
因此,在运算之前应先对序列x(n)进行倒序。
倒序的规律就是把顺序数的二进制位倒置,即可得到倒序值。
倒序数是在M 位二进制数最高位加一,逢2向右进位。