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