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