這個單元的主題:FFT系列:甚麼是「洩漏」(leakage)?「窗函數」(window)如何改善「洩漏」(leakage)?其中,FFT是fast Fourier transform,「快速傅立業轉換」是進行「頻譜分析」(spectral analysis)的數學方法,讀者可參閱#27:【甚麼是頻譜分析?】。
甚麼是「洩漏」?甚麼是「窗函數」?又為什麼「窗函數」可以改善「洩漏」呢?
首先,觀察左上方圖示,從無「洩漏」(without leakage)的餘弦波信號之FFT看起,其中,𝒙1(𝒕)=𝑿1𝐜𝐨𝐬(𝟐𝝅𝒇1 𝒕),𝑿1 = 1,𝒇1 = 100 Hz。採用的「FFT分析參數」,令 Fmax = fnyq= 500 Hz,LOR = Nf = 250 lines。可以得到其他5個「FFT分析參數」:
1. 「取樣頻率」(sampling frequency),fs = fnyq*2 = 500*2 = 1000 Hz。
2. 「總取樣點數」(number of samples),Nt = Nf*2 = 250*2 = 500 samples。
3. 「時間間距」(time interval),Δt = 1/fs = 1/1000 = 0.001 sec。
4. 「頻率解析度」(frequency resolution),Δf = fnyq / Nf = 500/250 = 2 Hz。
5. 「時間長度」(time frame),T = 1/Δf = Nf/ fnyq = 250/500 = 0.5 sec。
以此「FFT分析參數」的設定,對 𝒙1(𝒕) 信號進行FFT「快速傅立業轉換」,可以得到「傅立業頻譜」𝑿(𝒇),如預期在頻率 𝒇 = 100
Hz = 𝒇1,有振幅值 𝑿 = 1=
𝑿1,這是一個沒有「洩漏」的信號,所以可得到正確的「傅立業頻譜」。
為什麼會沒有「洩漏」呢?因為,
接著,觀察右方圖示,是有「洩漏」(with leakage)的餘弦波信號之FFT,其中,𝒙1(𝒕)=𝑿1𝐜𝐨𝐬(𝟐𝝅𝒇1 𝒕),𝑿1 = 1,𝒇1 = 101 Hz。採用相同的「FFT分析參數」進行FFT分析,可以看到所得到「傅立業頻譜」𝑿(𝒇),在頻率 𝒇 = 100 Hz,其振幅值 𝑿 = 0.6339,在頻率 𝒇 = 102 Hz,其振幅值 𝑿 = 0.6393,顯然與實際 𝒙1(𝒕) 信號的頻率𝒇1 = 101
Hz,是不相同的。這就是有「洩漏」的現象。
那麼,為什麼會有「洩漏」呢?因為,
需注意,在此圖的「窗函數」選項是”Box”,也可稱為”Uniform”、或”Rectangular”,中文稱為「方形/均勻/矩形窗函數」,相當於是”無”「窗函數」(without window)的效應。當餘弦波信號不能對「頻率解析度」
「洩漏」(leakage)。
實務上,此「洩漏」現象可以避免嗎?答案是:不可以避免!就算我們能將「頻率解析度」
如果,無法避免有「洩漏」的現象,那麼在觀察「傅立業頻譜」𝑿(𝒇) 就會誤判餘弦波的正確頻率以及其振幅值,那麼就沒能達到FFT「頻譜分析」的目的,因此,需要有改善「洩漏」現象的方法,就是適當的選用「窗函數」,讀者可參考先前單元:#106【典型的Window視窗加權函數有哪些?】
以下舉兩個常採用的「窗函數」,對有「洩漏」現象的信號,進行對應的FFT「頻譜分析」,說明如下:
1. 「漢寧窗函數」(Hanning window):參閱左下方圖示,在時間波形,可觀察加入「漢寧窗函數」處理,使得時間區間的兩端,強迫歸零,所以可以減少「洩漏」現象。在「傅立業頻譜」𝑿(𝒇) 就可看到振幅值有提高,和”Box”「窗函數」相比較,”Hanning”「窗函數」可以改善解析的振幅值,同時,洩漏到實際頻率鄰近兩側的頻帶寬度,也大幅改善減小,頻帶寬度變得比較集中。
2. 「平頂窗函數」(flat top window):參閱右下方圖示,在時間波形,可觀察加入「平頂窗函數」處理,使得時間區間的兩端,強迫歸零,所以也可以減少「洩漏」現象。但要注意,和”Hanning”「窗函數」比較,”flat top”「窗函數」的時間域加權效應略有不同。在「傅立業頻譜」𝑿(𝒇) ,”flat
top”「窗函數」會有完全正確的振幅值,但是,對應實際頻率峰值的頻帶寬度會增大。
綜合一下本單元的討論:
1. 無「洩漏」(without leakage)的餘弦波信號之FFT:當信號頻率能夠與「頻率解析度」
2. 有「洩漏」(without leakage)的餘弦波信號之FFT:在實務上,因為實際的信號各種頻率都有可能,所以有「洩漏」是無可避免的現象。「傅立業頻譜」𝑿(𝒇) 會洩漏到實際頻率鄰近兩側的頻帶。
要解決「洩漏」的現象,就要選用適當的「窗函數」(window
function),也可稱為「加權函數」(weighting function),本單元介紹了三種「窗函數」:
1. ”Box”「窗函數」:也稱為”Uniform”、或”Rectangular”,中文稱為「方形/均勻/矩形窗函數」,相當於是”無”「窗函數」(without window)的效應。對有「洩漏」的信號,在「傅立業頻譜」𝑿(𝒇) 會洩漏到實際頻率鄰近兩側的頻帶,其頻帶寬度大,振幅值的解析會不正確。
2. ”Hanning”「漢寧窗函數」:加入「漢寧窗函數」處理,原始信號在時間波形的取樣區間兩端,會強迫歸零,所以可以減少「洩漏」現象。在「傅立業頻譜」𝑿(𝒇),洩漏到實際頻率鄰近兩側的頻帶寬度,可大幅減小改善,頻帶寬度變得比較集中,實際信號的振幅值有較正確的解析,對實際信號頻率之解析度比「平頂窗函數」較佳。「漢寧窗函數」適用在任意的隨機信號(random signal),因為,有不錯的「頻率解析」以及「振幅值解析」,可以合理地取得及瞭解信號的「頻率」與「振幅值」特徵。
3. ”flat top”「平頂窗函數」:加入「平頂窗函數」處理,原始信號在時間波形的取樣區間兩端,也會強迫歸零,所以可以減少「洩漏」現象。在「傅立業頻譜」𝑿(𝒇),洩漏到實際頻率鄰近兩側的頻帶寬度,會比「漢寧窗函數」的頻帶較寬、較大,不過,有良好的振幅值。「平頂窗函數」適用在單頻率的校正信號之頻譜分析,例如:加速度規校正及麥克風感測器校正,因為「振幅值解析」幾乎正確,雖然,「頻率解析」不好,但是對校正而言,「振幅值解析」的正確性至關重要。
以上個人看法,請多指教!
王栢村
0 意見:
張貼留言