2014年4月18日 星期五

Signal Processing Note - Fourier Transform

之前對Fourier transform沒有很了解,於是這禮拜花了點時間看了一下參考資料,筆記一下!
在了解Fourier Transform之前應該會有幾個問題
  • Fourier Transform到底在做啥?
  • 為啥要把訊號做Fourier Transform?
  • 什麼是時域什麼是頻域?
  • 為啥做Fourier Transform後就是時域轉頻域?

這大概是初學Fourier Transform時會遇到的問題吧!至少我是這樣


1. Fourier Transform到底在做啥?

Fourier Transform最簡單的想法其實是就是給一個signal(ex: cosine wave),我們想看這個signal是由哪些頻率組成,例如有一個cosine wave如下Acos(2πf0t)

於是我們對此cosine wave乘上一個頻率相同的cosine wave並積分Acos(2πf0t)cos(2πf0t)dt=A

可以很清楚地看到如果乘上相同的 f0 會得有值A,那如果頻率不同呢?Acos(2πf0t)cos(2πf1t)dt=0

從這個出發點可以看到,頻率相同的會讓cosine wave有值,而頻率不同的會讓cosine wave相乘積分為0,所以我們將另外乘上的cosine wave中的frequency定為變數f得到Acos(2πf0t)cos(2πft)dt=Aδ(ff0)

上面就是一個最簡單的Fourier轉換,目的就是要去找出某個wave主要是由哪些frequency所組成的,所以Fourier Transform目的就是在找出wave的frequency


2. 為啥要把訊號做Fourier Transform?

這個答案就是第一個問題的結論,做Fourier Transform的目的就是要找出wave是由哪些frequency組成


3. 什麼是時域什麼是頻域?

小時候學過,頻率就是單位時間內變化幾次。頻域的分析其實就是在分析由哪些頻率來組成wave,而時域的意思就是分析時間和wave的關係


4. 為啥做Fourier Transform後就是時域轉頻域?

這個問題在第一個問題就得到解答,這裡就不多說喏XD(其實是想偷懶)


Continuity Fourier Transform

大概了解Fourier Transform之後,來看看完整的Fourier Transform:
假設Wave Function為χ(t)

ex: χ(t)=sin(t)

前面提到如果是cosine wave的話,我們乘上cosine wave然後積分,在這裡我們改乘上ei2πft然後積分χ(2πf)=χ(t)ei2πftdt

在這裡2πf有點不好看,所以把它改寫成ω=2πf χ(ω)=χ(t)eiωtdt

上面的式子為連續型的Fourier Transform,其中χ(t)為解析函數(可微分函數)!順利的看到傳說中的Fourier Transform喏!不過為啥要乘eiωt呢?其實任何的Wave function都可以表示成eiωt,懂一點大學數學的就會知道eiωt=cos(t)+isin(t),是一個複數(complex number),什麼!有沒有搞錯,Wave Function是複數!沒錯!就是複數,那複數波到底是啥?這個問題曾經困擾過我,可以回到高中數學,高中解坐標旋轉常常會把坐標點表示成complex number,然後用棣美佛定理旋轉,同樣的道理複數波其實也是這樣,他只是把兩個part看成一個複數而已,看成複數的目的就是可以得到很多好算的性質!最後附上Inverse Fourier Transformχ(t)=χ(ω)eiωtdω


Discrete Fourier Transform

上面提到的是連續的Fourier Transform,而且χ(t)必須是可解析函數,當然現實中哪有那麼好康的事,很多函數是不可解析的,這時我們會對某一非解析的Wave做取樣(sampling),那什麼事取樣?從wiki的到字面上的解釋:取樣是將訊號從連續時間域上的類比訊號轉換到離散時間域上的離散訊號的過程,簡單來說就是對Wave的固定間隔做取值得動作,用下圖看應該會比較有Fu

大概知道Sampling的概念之後,根據上圖,有些名詞要解釋

  • T: T代表取樣時間長度,假設共取樣N個點,取樣時間為Δt,則T=NΔt
  • fs(sampling frequency): fs=1Δt,即代表1秒鐘要取樣幾次
  • Δf(頻率解析頻寬): Δf=1T
  • Nyquist Frequency fnyq:fnyq=fs2,即代表有效解析頻率為取樣頻率一半

Discrete Fourier Transform主要是先在連續的信號做sampling,將信號每隔Δt取樣N次。Discrete Fourier Transform如下: χ(mΔω)=N1n=0χ(nΔt)ei(mnN)Δt,m=0,1,,N1

Inverse Discrete Fourier Trancform:χ(nΔt)=N1n=0χ(mΔω)ei(mnN)Δω,n=0,1,,M1

看了不少教學都自動略過Discrete Fourier Transform,只說概念上是一樣的,但是深入一點會發現,Discrete有一些地方其實和Continuity的Fourier Transform有些許的不同,利用下圖來說明

上圖為理想的Fourier Transform,也就是我們直接去對可解析函數做轉換

上圖在說明如果我們將原本的訊號做Sampling,共有無限多個離散訊號,也就是說N=,經過Discrete Fourier Transform後會發現呈現週期性的樣子,且週期為Sampling rate f=1Δt!注意在這裡frequency domain為continuity的函數,當取樣時間非無限大時才會變離散,原因在於Δf=1T,當T時,Δf0,也就是說解析頻寬會趨近於零就會得到χ(ω)=n=χ(ω)eiωnT

當然我們不可能對訊號做無限個Sampling,我們只能在有限的時間內做Sampling,之前有提到一個Δf=1T,也就是在頻域的解析頻寬,即把Δf內的frequency當成一個discrete signal

最後我們假設在Wave經過數位化+區間化+週期化(在時域石呈現週期),即可得到上圖的結果,這就是完整的Discrete和Continuity Fourier Transform不同的地方!好惹這樣就結束喏嗎?最後來看一下Nyquist Theorem


Nyquist Theorem:

這個定理在描述我們的sampling rate到底要多快才夠

從上圖的a跟b可以看到,a的frequency比較慢,而b的frequency比較快,但是sampling出來的結果相同,可見如果sampling rate不對,會發生信號失真的情況(Aliasing),所以Nyquist Theorem告訴我們如何找到對的sampling rate,也就是如下的不等式samlingrate2Maxfrequency

也就是說假設一Wave用5MHz傳,則我們需要用10MHz的sampling rate去sampling,那麼越高越好嗎?不盡然,越高的的話會增加DFT的計算量,當然最大的問題應該還是硬體的實現,不過這部分就不太了喏!所以之前看到的fnyq其實就是表示Max frequency,因為在Discrete Fourier Transform的頻譜可以看到會呈現週期性的變化,所以我們只需要觀察fnyq前即可

Reference:

沒有留言:

張貼留言