【从原理的视角】傅里叶级数以及三角表达式、虚指数表达式,Matlab仿真程序
傅里葉變換是電子信息類專業的核心課程,是很多大學生的噩夢課程,傅里葉變換的思想是現代電信科技的數學基礎,貫穿了信號處理、運動控制、圖像處理、電路分析以及光學等眾多領域。如此重要的數學理論思想,無論是學生還是從事技術工作的人都有必要深刻領會。寫此文的目的一是基于自己當年沒有學懂,工作后回過頭來再看,有種恍然大悟的感覺,二是找個地方做個筆記,方便以后查看學習。
程序演示
再次重新學習傅里葉變換是基于斯坦福大學的EE261課程-The Fourier Transforms and its Applications,最初是在網易公開課看到的視頻,后來不知道為什么網易撤掉了此課程,再后來又從youtube重新看了一遍。現在有油管工已經把視頻搬到了B站。配套的pdf文檔可以在CSDN下載頻道搜索下載。
歐拉在研究繩子的波動現象時,最早就提出繩子的波動形態可以分解成兩個甚至更多的正弦波的疊加。
假如有三個正弦函數,分別為 s i n 2 π t sin2\pi t sin2πt、 s i n 4 π t sin4\pi t sin4πt、 s i n 6 π t sin6\pi t sin6πt,假設幅值都為1,他們的函數圖像如下所示。
把這三個函數相加會得到什么呢 ?
從上圖我們可以看到,不同頻率的正弦函數相加后,仍然得到一個周期函數,此時周期為1。從這里我們可以得到波動疊加的第一個重要思想:多個頻率,一個周期,疊加后的周期為最長的那個正弦周期。意思是疊加后的周期函數包含多個頻率成分,但周期只有一個,等于分解后正弦分量的最長周期。
此處分享一個EE261課程中老師分享的一個波形合成Matlab程序,下載地址:sinsum2.zip
下載文件后解壓縮,然后用matlab打開.m文件,運行后出現如下界面。
最上面是輸入正弦函數的個數,第二行逐個選擇每個函數后,在第三行里設置幅度和相位,配置后即可自動顯示疊加效果。
理論計算
傅里葉在前人思路的基礎上大膽設想,任意周期函數都可以分解成若干個三角函數的疊加,該思想寫在一片論文中提交給了法國科學院,遺憾的是當時的科學院權威拉普拉斯覺得這個理論不夠嚴謹,沒有同意論文的發表。當然這并沒有阻礙這種思想后來在工程領域大放異彩,特別是通信領域,把信號進行傅里葉級數分解后,把不需要頻率成分去除,即可達到濾波的作用,當然這是后話。
三角函數 s i n 2 π t sin2\pi t sin2πt ,其周期 T = 1,即 s i n 2 π ( t + 1 ) = s i n 2 π t sin2\pi(t+1) = sin2\pi t sin2π(t+1)=sin2πt
對于任意的周期為1的函數,可以表達為N個正弦函數的和, f ( t ) = ∑ k = 1 N A k s i n ( 2 π k t + ? k ) f(t) = \sum_{k=1}^N A_k sin(2\pi kt + \phi_k) f(t)=k=1∑N?Ak?sin(2πkt+?k?)
將正弦函數展開后得到 f ( t ) = ∑ k = 1 N A k ( s i n 2 π k t c o s ? k + c o s 2 π k t s i n ? k ) f(t) = \sum_{k=1}^N A_k (sin2\pi kt \; cos \phi_k \; + \; cos2\pi kt \; sin \phi_k ) f(t)=k=1∑N?Ak?(sin2πktcos?k?+cos2πktsin?k?)
對于一個函數,初始相位是常數,即 c o s ? k , s i n ? k cos \phi_k, sin \phi_k cos?k?,sin?k?為常數,繼續化簡上面的表達式: f ( t ) = ∑ k = 1 N ( a k c o s 2 π k t + b k s i n 2 π k t ) f(t) = \sum_{k=1}^N (a_k \; cos2\pi kt \; \; + \; b_k \; sin2\pi kt \; ) f(t)=k=1∑N?(ak?cos2πkt+bk?sin2πkt)
如果在 f ( t ) f(t) f(t)含有直流分量(常數項)的情況下,表達式
可以寫為 f ( t ) = a 0 2 + ∑ k = 1 N ( a k c o s 2 π k t + b k s i n 2 π k t ) \boxed{f(t) =\; \frac{a_0}{2} \; + \sum_{k=1}^N (a_k \; cos2\pi kt \; \; + \; b_k \; sin2\pi kt \; ) \quad \quad} f(t)=2a0??+k=1∑N?(ak?cos2πkt+bk?sin2πkt)?
此即為傅里葉級數的三角表達式。
圓周運動的虛指數表達
國內的課程在三角函數的基礎上會繼續展開推導其它內容,比如系數 a k 、 b k a_k、b_k ak?、bk?,三角函數在計算的時候非常的繁雜,在進行積分、微分的時候也不便捷。想當年高中的時候,最頭疼的就是三角函數部分的學習,現在回過頭來看,我們當年的課程引入三角函的視角就是錯誤的,不應該由三角形引入三角函數,而是應該從圓周運動入手。
在繼續下面的文章之前,有必要理清一個思路:圓周運動中,半徑在坐標軸上的投影,即為三角函數。
θ \theta θ 可以表示為 ω t \omega t ωt
后來理論學家們把傅里葉級數三角函數的表達式改寫成了虛指數形式,當然,這個偉大的創舉首先要感謝歐拉!虛指數表達中,把笛卡爾坐標的y軸改為虛軸i。我們用 e i ω t e^{i\omega t} eiωt 來表示一個半徑為單位長度1的圓,圓周上一點A以角頻率 ω \omega ω,做逆時針旋轉。同樣,可以用 e ? i ω t e^{-i\omega t} e?iωt來表示順時針旋轉。
在某一時刻,A轉過的角度 θ = ω t \theta \; =\; \omega t θ=ωt??梢缘玫较铝嘘P系式,建立起了虛指數與三角函數的關系。
e i θ = c o s θ + i s i n θ e^{i\theta}\;=\; cos\theta\;+\; isin\theta eiθ=cosθ+isinθ
e ? i θ = c o s ( ? θ ) + i s i n ( ? θ ) = c o s θ ? i s i n θ e^{-i\theta} ={}cos(-\theta)+ isin(-\theta) {} \\ =\; cos\theta\;-\; isin\theta e?iθ=cos(?θ)+isin(?θ)=cosθ?isinθ
下圖表示: c o s θ = e i θ + e ? i θ 2 cos\theta\;=\; \dfrac{e^{i\theta}+e^{-i\theta}}{2} cosθ=2eiθ+e?iθ?
下圖表示: s i n θ = e i θ ? e ? i θ 2 i sin\theta\;=\; \dfrac{e^{i\theta}-e^{-i\theta}}{2i} sinθ=2ieiθ?e?iθ?
傅里葉級數的虛指數表達
上面一節我們得到了虛指數和三角函數的關系式,現在可以利用sin和cos的表達式把三角形式的傅里葉級數改寫為虛指數形式。
a k c o s 2 π k t + b k s i n 2 π k t = a k e 2 π i k t + e ? 2 π i k t 2 + b k e 2 π i k t ? e ? 2 π i k t 2 i = a k 2 ( e 2 π i k t + e ? 2 π i k t ) + b k 2 i ( e 2 π i k t + e ? 2 π i k t ) = a k ? b k i 2 e 2 π i k t + a k + b k i 2 e ? 2 π i k t = ∑ k = ? ∞ ∞ C k e 2 π i k t a_k \; cos2\pi kt \; \; + \; b_k \; sin2\pi kt \; = \;a_k \frac{e^{2\pi ikt}+e^{-2\pi ikt}}{2}+b_k \frac{e^{2\pi ikt}-e^{-2\pi ikt}}{2i} \\ = \; \frac{a_k}{2} (e^{2\pi ikt}+e^{-2\pi ikt})\;+\; \frac{b_k}{2i} (e^{2\pi ikt}+e^{-2\pi ikt})\\ = \; \frac{a_k-b_ki}{2} e^{2\pi ikt}+\frac{a_k+b_ki}{2} e^{-2\pi ikt} \\ = \sum_{k=-\infin}^\infin C_k e^{2\pi ikt} ak?cos2πkt+bk?sin2πkt=ak?2e2πikt+e?2πikt?+bk?2ie2πikt?e?2πikt?=2ak??(e2πikt+e?2πikt)+2ibk??(e2πikt+e?2πikt)=2ak??bk?i?e2πikt+2ak?+bk?i?e?2πikt=k=?∞∑∞?Ck?e2πikt
其中 C k = a k + b k i 2 C_k=\dfrac{a_k+b_ki}{2} Ck?=2ak?+bk?i?
從上面的推導過程可以看出, C k C_k Ck?為共軛復數,滿足 C ? k = C k  ̄ C_-k=\overline{C_k} C??k=Ck??。
我們設當 k = 0 k=0 k=0時, C 0 = a 0 2 C_0 =\dfrac{a_0}{2} C0?=2a0??,從而得到了周期函數 f ( t ) f(t) f(t)的虛指數表達式:
f ( t ) = ∑ k = ? ∞ ∞ C k e 2 π i k t \boxed{f(t) =\; \sum_{k=-\infin}^\infin C_k \; e^{2\pi ikt} \; \quad \quad} f(t)=k=?∞∑∞?Ck?e2πikt?
說明:
在虛指數表達式里出現了負頻率,此處負頻率并沒有實際的物理意義,從上面的推導過程我們可以知道,負頻率只是為了讓最終的計算結果為實數。
上面公式的推導都是以周期為1進行的,如果對于任意周期的傅里葉系數將會在后續章節中提及。依據的公式無非是 ω = 2 π T \omega=\dfrac{2\pi}{T} ω=T2π?, c o s θ = c o s ω t = c o s 2 π T t cos\theta=cos\omega t =cos\frac{2\pi}{T}t cosθ=cosωt=cosT2π?t。
下篇博文會提到向量空間,正交基,映射,內積等概念,推導出傅里葉系數 C k C_k Ck?的表示方法。
總結
以上是生活随笔為你收集整理的【从原理的视角】傅里叶级数以及三角表达式、虚指数表达式,Matlab仿真程序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Baumer工业相机堡盟工业相机软件Ca
- 下一篇: 万维网之父 65 岁创业,原因与你我都有