基2-FFT简记

快速傅里叶变换(Fast Fourier Transform,FFT)是一种可在O(nlogn)时间内完成的离散傅里叶变换(Discrete Fourier transform,DFT)算法。



复数单位根w^k_n

横轴为实轴,纵轴为虚轴的复平面上,e^{i\theta }=cos\theta +i\cdot sin\theta

(将复平面单位圆均分成n份,以单位圆与实轴正半轴的交点一个等分点,以原点为起点,n个等分点为终点,做n个单位向量,其中幅角为正且最小的向量被称为n次单位向量,记为w^1_n)

易知w^n_n=w_n^0=1

所以,w^k_n= e^{k\cdot \frac{2\pi}{n} i }

(复平面中复数加法满足平行四边形法则,乘法满足幅角相加,模长相乘)根据这性质易几何证明以下两性质

复数单位根性质:

1、折半引理:w^{2k}_{2n}=w^k_n  \Rightarrow   w^{mk}_{mn}=w^k_n

2、消去引理:w_n^{k+\frac{n}{2} }=-w^k_n


离散傅里叶变换的复杂度为O(n^2)

快速傅里叶变换的复杂度为O(NlogN)

N点FFT阶段数为logN而每一阶段的复杂度为N,故复杂度为O(NlogN)

以8点FFT为例,绿色的列表示一个阶段,每个空心圈表示一次乘加,一列共N个



先看离散傅里叶变换(DFT)表达式  (x_n时域,x_k频域):         

x_k = \sum_{n=0}^{N-1}x_n\cdot e^{-i \frac{2\pi kn}{N} },  k=0,1,...N-1

e^{-i \frac{2\pi kn}{N} } = w^{nk}_N

通过上述DFT的表达式,其可以用复数单位根表示成:

x_k=\sum_{n=0}^{N-1}x_n\cdot w_N^{nk}                ,k=0,1,2,...,N-1

      =\sum_{n \in  even} x_n w_N^{nk}+\sum_{n \in odd} x_n w_N^{nk}

      =\sum_{r=0}^{\frac{N}{2} -1} x_{2r} w_N^{2rk}+\sum_{r=0}^{\frac{N}{2} -1} x_{2r+1} w_N^{(2r+1)k}

        =\sum_{r=0}^{\frac{N}{2} -1} x_{2r} w_N^{2rk}+w_N^{k} \sum_{r=0}^{\frac{N}{2} -1} x_{2r+1} w_N^{2rk}

        =\sum_{r=0}^{\frac{N}{2} -1} x_{2r} w_{\frac{N}{2}} ^{rk}+w_N^{k} \sum_{r=0}^{\frac{N}{2} -1} x_{2r+1} w_{\frac{N}{2} }^{rk}

        =G_k +w^k_NH_k

在这边我们要注意的是,我们所替换的G[k]与H[k]具有周期性:

此性质根据单位根的几何意义得证

上述的推导可以划成下面的图,以8点DFT为例(N=8,左边一列为时域,右边一列为频域):

划红框处所示的\frac{N}{2} 点DFT架构如下图所示:

划红框处所示的\frac{N}{4} 点DFT架构如下图所示:

综上,下图是一个8点DIT FFT的完整架构图:

图中应用性质,例如左边的


库利和图基的FFT算法的最基本运算为蝶形运算,每个蝶形运算包括两个输入点,因而也称为基-2算法。 


参考:库利-图基快速傅里叶变换算法




FFT还能用来加速多项式乘法。朴素计算两个N-1次(N项)多项式复杂度为O(N^2)

多项式系数表达法
多项式的点值表达法

F(x) = f(x)\ast g(x)

点值表达法的多项式乘积十分方便,复杂度为

这里有个点就是点值表示法的乘积,按理说两个n次的多项式乘积的最高次为2n,而点值表示法就像是解方程,2n次方程式需要2n个点值点才能唯一确定,所以我理解的是需要两次上图的点值表示法乘积才能确定结果。

而是用DFT和IDFT可以分别转换 系数表达法 到 点值表达法 和 点值表达法 到 系数表达法,FFT可以加速这两个转换过程。

大概过程是,先将两个系数表示法的多项式分别转化为点值表达式,再进行点值表达法的多项式乘积运算,再将结果转换回系数表达法。

需要注意的是,在求两个次数分别为n_1-1n_2-1的多项式的乘积时,需要分别求出在至少n_1+n_2-1个点处的值,这样才能保证相乘后唯一确定一个n_1+n_2-2次多项式。

假设C(x) = A(x)\ast B(x),A(x)、B(x)的点值表达式均有N个点,而他们的乘积C(x)因为次数为2N所以需要2N个点值点,那么怎么出现2N个点呢,多选一些点即可。所以在计算N次多项式的点值表达法时要取2N个点值点,我的理解是这2N个点在复平面上直接取w_{2N}^k,分成两组N个点(保证了两组中每个点均不同),对于一个系数表达式进行两次N点FFT,最终一个N次系数表达式得到2N个点值点。这一步通过4次FFT完成了两个待乘系数表达式到点值表达式的转换。然后进行后续计算。

至于为什么将2N个点要分成两组N计算,是因为系数表达式有N个点,所以通过FFT一次只能计算N个点值点,需要算两次完成一个表达式的转换,因为需要算的是两个N-1阶表达式的乘积,需要转换两个式子,所以这一步共需4次FFT。而后面的点值表示法再转回稀疏表示法可以直接一次2N点FFT搞定。个人理解,有待考证




关于FFT加速多项式乘法具体见下文:

快速傅里叶变换FFT

FFT(快速傅里叶变换)0基础详解

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,445评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,889评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,047评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,760评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,745评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,638评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,011评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,669评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,923评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,655评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,740评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,406评论 4 320
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,995评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,961评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,023评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,483评论 2 342