What is FFT? FFT学习笔记

在时间序列、数字信号的数据处理中经常会看到使用FFT作为一段数据中提取频率的手段,但是往往文中没有花大笔墨去解释,仿佛所有人都了解这个概念。

FFT(Fast Fourier Transform) 为快速傅里叶变换,是一种高效计算DFT(Discrete Fourier Transform),离散傅里叶变换的方法。在了解FFT之前需要先了解DFT的作用。

DFT

离散傅里叶变换(Discrete Fourier Transform,简称DFT)是一种数学算法,用于将一个序列或信号从时域转换到频域,广泛应用于信号处理、图像处理、音频分析、通信系统等领域。时域是指信号随时间的变化,而频域则描述了信号中不同频率成分的分布。人话说,就是由一段x=时间; y=幅度的信号数据转换成为x=频率; y=幅度的数据,可以参考以下这个图:

img

原信号(上图)中存在两种不同的频率(f=25f=100),通过DFT提取可以看到下图中,它们在频域上显示了两个峰出来。在频域中,信号被表示为一系列频率成分,每个成分由一个幅度(amplitude)和相位(phase)组成。

DFT是傅里叶分析在离散信号处理领域的核心工具,主要目的是将离散信号(时域信号)转换成其对应的频。与连续信号不同,离散信号在时间上是分隔的,例如数字音频或图像数据。

数学表达

DFT将一个长度为n的复数或实数序列 [x0,x1,...,xn1] 转换成另一个长度为 n 的复数序列 [X0,X1,...,Xn1] 转换的公式为

(1)X(k)=j=0n1xnei2πnkj

其中,i 是虚数单位,k是当前频率的索引。

由于因为它涉及对每个输出频率 Xk 进行 n 次复数乘法和加法操作,直接计算的复杂度为 O(n2),因此往往都会使用FFT来进行高效计算。FFT并不改变DFT的结果,只是提供了一种更快的计算方式。

FFT

FFT主要采用了一些技巧来简化流程。

复数单位根

首先将以上公式(1)中的指数部分写为以下格式:

ei2πnkj=ωnkj,where ωn=ei2πn

证明:

Definition: 如果一个复数ωn=1, 我们将{ωnk},k=1,...n 定义为n次单位根。n次单位根有三个性质,后面会用到:

(2)1. ωnk=ω2n2k2. ωnk=ωnk+n23. ωn0=ωnn=1

由于欧拉公式 eπi=1,我们可以得出 ωn:=ei2πn 是一个n次单位根。再做一些简单的幂运算就可以得出上面的公式

多项式变换

首先确定几个notation,我们要处理的信号数据是 xRT(暂时假设是一维),是一个长度为T的数组。xn 代表了在n时间点上信号数据的值。

我们使用f(x)来指代需要进行的FFT计算,注意这里 xx 不同。将公式(1)的多项式可以展开为一个多项式t

f(x)=x0+x1x+x2x2+x3x3+...+xn1xn1

让我们不失一般性地,假设n=2s,因为我们可以将一个多项式延展到更高次的多项式,将系数设为0。让我们根据xn下标的奇偶性将f(x)分为两个部分:

f(x)=(x0+x2x2+x4x4+...+xn2xn)+(x1x+x3x3+x5x5+...+xn1xn1)=(x0+x2x2+x4x4+...+xn2xn)+x(x1+x3x2+x5x4+...+xn1xn1)=f1(x2)+xf2(x2)where:f1(x)=x0+x2x2+x4x4+...+xn2xnf2(x)=x1x+x3x+x5x4+...+xn1xn1

将公式 (1) 中的 ωnk=ei2πnk 作为 x 带入,根据单位根性质 (2) 中的 ωnk=ω2n2k 可得:

f(ωnk)=f1(ωn2k)+ωnkf2(ωn2k)ωnk=ω2n2k=f1(ωn2k)+ωnkf2(ωn2k)

x=ωnk+n2 带入,再根据单位根性质可得

f(ωnk+n2)=f1(ωn2k+n)+ωnk+n2f2(ωn2k+n)ωnk=ωnk+n2,ωn0=ωnn=1=f1(ωn2k)ωnkf2(ωn2k)=f1(ωn2k)ωnkf2(ωn2k)

因此,通过计算 f1(ωn2k),ωnkf2(ωn2k) 可以通过 O(logn) 复杂度计算得到 f(ωnk),f(ωnk+n2) ,再通过 O(nlogn) 计算得到多项式所有的项。

posted @   落魄统计佬  阅读(105)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· spring官宣接入deepseek,真的太香了~
点击右上角即可分享
微信分享提示