fft的c语言和matlab对比_傅里叶级数(FS)、傅里叶变换(FT)快速傅里叶变换(FFT)及量子傅里叶变换(QFT)之间推导关系...
1 引言
傅里葉級(jí)數(shù) (Fourier Series, FS) 是《高等數(shù)學(xué)》中遇到的一個(gè)重要的級(jí)數(shù),它可以將任意一個(gè)滿足狄利克雷條件的函數(shù)為一系列三角級(jí)數(shù)的和。最早由法國數(shù)學(xué)家傅里葉在研究偏微分方程的邊值問題時(shí)提出,極大地推動(dòng)了偏微分方程理論的發(fā)展。根據(jù)歐拉公式及其推導(dǎo)式,傅里葉級(jí)數(shù)又可以推導(dǎo)出《信號(hào)與系統(tǒng)》中最重要的傅里葉變換(Fourier Transform, FT)。FT由于可以將信號(hào)從時(shí)域到頻域來回變換,分析信號(hào)的成分,從而廣泛應(yīng)用于信號(hào)處理領(lǐng)域。在計(jì)算機(jī)處理中,信號(hào)被離散化為采樣點(diǎn),針對(duì)離散采樣點(diǎn)的傅里葉變換成為了《數(shù)字信號(hào)處理》中的離散傅里葉變換(Discrete Fourier Transform, DFT)。但是由于DFT計(jì)算量過于龐大(計(jì)算復(fù)雜度高),1965年由J.W.庫利和T.W.圖基提出了最早版本的快速傅里葉變換(Fast Fourier Transform, FFT),將計(jì)算量減少了幾個(gè)量級(jí),從而使得計(jì)算機(jī)更加快速地處理信號(hào),從而促進(jìn)通信、信號(hào)處理領(lǐng)域的快速發(fā)展。近年來由于量子計(jì)算機(jī)的興起,量子傅里葉變換(Quantum Fourier Transform, QFT)更是可以對(duì)FFT進(jìn)行指數(shù)級(jí)別的加速。
由于這一系列變換出現(xiàn)在不同學(xué)科中,老師在講課時(shí)也是各自獨(dú)立講解,所以大多數(shù)同學(xué)(包括我)對(duì)其中的似曾相識(shí)的公式,一直分不清有什么區(qū)別和聯(lián)系,這篇文章著重于這一系列傅里葉算法的直接的相互推導(dǎo)。
2 一維傅里葉級(jí)數(shù)(FS)
2.1 周期性
首先寫出傅里葉級(jí)數(shù)的表達(dá)式:
其中,
, 是FS的系數(shù),也是我們需要求的參數(shù),若它們確定,則即可被分解為N階的FS。
由于
, ,因此上式可以改寫為:當(dāng)
時(shí), , 是周期為 的周期函數(shù),也是FS中周期最大的一組分量。我們?nèi)≈芷? ,其他分量,在 中應(yīng)該包含了多個(gè)完整的周期。此時(shí)有:2.2 正交性
何為正交?正交是線性代數(shù)中的概念,即列向量a, b的內(nèi)積為0,就稱這兩向量正交。正交還可以不嚴(yán)謹(jǐn)?shù)乩斫鉃檫@兩組向量之間沒有關(guān)系。
同樣地,借鑒這個(gè)定義,在連續(xù)函數(shù)中的正交為:
此時(shí),我們令
,有:積分是一個(gè)線性算符,積分和等于和的積分,上式可以看做兩個(gè)三角函數(shù)分別積分。當(dāng)
時(shí),無論 還是 均大于等于1,因此它們的周期必然小于等于 。根據(jù)前面的結(jié)論有:當(dāng)
時(shí),上式變?yōu)?#xff1a;前一項(xiàng),積分明顯為0,后一項(xiàng)為
。同理,還可以嘗試令
,在此不再贅述,可以得到結(jié)論:在FS中每兩個(gè)不同的級(jí)數(shù)之間存在兩兩正交關(guān)系。2.3 求系數(shù)
,首先看
怎么求。令:就是把要分解的函數(shù)和傅里葉級(jí)數(shù)同時(shí)做了積分,等號(hào)右邊可以拆為2N+1個(gè)積分和,根據(jù)前面的周期性可知,除了第一項(xiàng)以外,后面的項(xiàng)的積分均為0。故上式可以化簡為:
這里的表達(dá)式就說明了
其實(shí)是函數(shù)的均值。接著,我們嘗試求
,令:其中,
也是1~N中的一個(gè)值,為了便于和 區(qū)分開來,方便敘述。利用上面證明的周期性和正交性,我們可以知道,只有當(dāng)
時(shí),積分結(jié)果才不為0,其余均為0。故上式可以化簡為:故:
同理,我們可以得到正弦分量的系數(shù)。最后結(jié)果為:
到這里,所有FS的系數(shù)就能求出來了。但是這里有個(gè)比較詭異的地方,當(dāng)
時(shí),上式算出的 與我們之前算出的 不等,為了保持k的延續(xù)性,通常情況是用 表示FS的第一項(xiàng)。3 傅里葉變換(FT)
3.1 FT和FS之間的關(guān)系
首先,把傅里葉變換的公式寫出來:
然后,回到傅里葉級(jí)數(shù)。
根據(jù)歐拉公式
及其一個(gè)簡單的變形:
代入到傅里葉級(jí)數(shù)中:
令
傅里葉級(jí)數(shù)變?yōu)?#xff1a;
變換后的系數(shù)
求解方式可以根據(jù)上面 求得。若
的定義域是 ,且 是非周期函數(shù),我們可以對(duì) 進(jìn)行周期延拓,認(rèn)為它在定義域內(nèi)為一個(gè)周期;而 和 前所述,在 中最少有1個(gè)周期,上式不妨寫為:所以,
當(dāng)
時(shí), 與 間隔很小,可視作連續(xù)。由于
在 內(nèi)為一個(gè)周期,也可以表示為在 內(nèi)也是一個(gè)周期(周期延拓)。故上式寫為令
, 由 替換, 由 替換就出現(xiàn)了傅里葉變換的公式3.2離散傅里葉變換
在計(jì)算機(jī)中,我們不可能令
,這樣 與 仍被當(dāng)做離散量,這樣一來積分號(hào)就變成了求和號(hào),上式可以寫作:因此我們就得到了能夠被計(jì)算機(jī)執(zhí)行的離散傅里葉變換的函數(shù)式。
為便于理解,先帶個(gè)具體數(shù)據(jù)進(jìn)去考慮。若采樣的數(shù)據(jù)點(diǎn)為8,頻率分量個(gè)數(shù)也為8。用
來表示這種情況下的DFT函數(shù)。
上面這些式子用矩陣表示為,假設(shè)有個(gè)矩陣
右乘一個(gè)時(shí)域組成的列向量得到一個(gè)頻域組成的列向量。將上面的一組求和式翻譯成矩陣
為了便于觀察,令
矩陣中的 。上式可以寫為:根據(jù)
的周期性: 可進(jìn)一步化簡。3.3 快速傅里葉變換
從3.2節(jié),我們知道了,要完成一次DFS需要用一個(gè)矩陣去乘以一個(gè)時(shí)域組成的列向量,而這個(gè)矩陣大小與時(shí)域上的采樣點(diǎn)和頻域分量的個(gè)數(shù)有關(guān)。若它們的個(gè)數(shù)為
,則上面的一個(gè)矩陣乘法包含 次數(shù)值乘法,這當(dāng) 較大時(shí),需要消耗大量的計(jì)算機(jī)資源。好在構(gòu)成DFS的矩陣有著一定的特殊規(guī)律,可以使用分治法,使其只需要大約 次數(shù)值乘法,即可完成工作。仍然以
為例,不難看出 是一個(gè)正交對(duì)稱陣(實(shí)際上所有DFS構(gòu)成的矩陣都是正交對(duì)稱陣)。交換 偶數(shù)列位置提到奇數(shù)列前面。而
與 只差一個(gè)奇偶置換矩陣同樣地,我們還可以寫出
同樣地,令
矩陣中的值得注意的是
(周期性)故
又可以寫為: 左邊4列中包含了兩個(gè) 而右邊4列是由系數(shù)和 共同組成。因此 又可以被寫為:其中
為單位陣, 是一個(gè)對(duì)角陣。最后
這樣一來上面這個(gè)矩陣需要多少次乘法呢?由于
是奇偶置換矩陣,在計(jì)算機(jī)中是只需要移位,不需要做乘法運(yùn)算,故顯然,主要的計(jì)算量在于
和 ,共計(jì) 次數(shù)值乘法, 是對(duì)角陣,需要額外4次乘法, 是它的相反數(shù),不計(jì)入乘法次數(shù)。最后我們就將原本需要 次乘法變?yōu)榱? 次乘法。同理,我們還可以對(duì)
進(jìn)一步拆分為帶入
中化簡下:
此時(shí)需要的乘法數(shù)量為
推廣到更一般的情況,仍然可以使用類似上述的遞歸方式,最后FFT的計(jì)算復(fù)雜度變?yōu)?
4、量子傅里葉變換
如果對(duì)量子邏輯門有一定了解的同學(xué),看到上面最終的遞歸化簡式,已經(jīng)發(fā)現(xiàn)和量子邏輯門很像了。比如我們看
那這不就是
門嘛。再比如
也可以分解成量子門的形式(中間省略了歸一化參數(shù)):其中
為哈德瑪門, 為 的單位陣, 為受控S門。 也可以分解成量子門的形式(中間省略了歸一化參數(shù)):其中,
相當(dāng)于 的單位陣。 相當(dāng)于 門。接著 我們觀察置換矩陣
,列出這兩個(gè)的真值表不難發(fā)現(xiàn)
就相當(dāng)于SWAP門根據(jù)
的遞歸表達(dá)式可以看出,矩陣左乘向量順序?yàn)橄? 再 ,它們的真值表變換如下列出合并后的真值表,那這不就是1,3 qubit交換位置嘛。
即:
整個(gè)
的遞歸式就可以寫成(中間省略了歸一化參數(shù)):量子電路如下:
有興趣的可以對(duì)比一下與《量子計(jì)算與量子信息》書中盒子5.1是否是等價(jià)的電路。如果以基本量子門作為計(jì)算單元的話,QFT的復(fù)雜度則只需
總結(jié)
以上是生活随笔為你收集整理的fft的c语言和matlab对比_傅里叶级数(FS)、傅里叶变换(FT)快速傅里叶变换(FFT)及量子傅里叶变换(QFT)之间推导关系...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java的vector_java中的Ve
- 下一篇: 一款三搭_冬日穿搭指南!照着这八条万能公