《振動噪音科普專欄》FFT系列:如何確認FFT頻譜分析程式的正確性?

這個單元的主題:FFT系列:如何確認FFT頻譜分析程式的正確性?其中,FFTfast Fourier transform快速傅立業轉換」是進行「頻譜分析(spectral analysis)的數學方法,讀者可參閱#27:【甚麼是頻譜分析?】。

 

首先,參閱1,對FFT4W的思考:

 

1.      “What” is?:甚麼是FFTFFT是「快速傅立業轉換(fast Fourier transform)

2.      “Why” to do?:為什麼要進行FFT頻譜分析」?

3.      “What” to get?FFT頻譜分析」可以得到甚麼?

4.      “How” to do?:如何檢查FFT頻譜分析」程式?

 

要撰寫發展一個「FFT頻譜分析」程式,參閱1,可以採用ISOC系統方塊圖」的理念,說明如下:

 

1.      Input 輸入𝒙(𝒕) 是一個信號的時間波形(time waveform)

2.      System 系統:就是所要發展的FFT快速傅立業轉換」的「頻譜分析」程式。

3.      Output 輸出𝑿(𝒇) 𝒙(𝒕) 的「傅立業頻譜(Fourier spectrum)

4.      Control variables控制變數:由先前單元#179FFT系列:FFT參數 Fmax LOR 對量測信號之影響?,常用的「FFT分析參數」之設定有兩個:「有效頻率(effective frequency)fnyq = Fmax,以及「頻率解析條數(lines of resolution)Nf = LOR。在此,令Fmax = fnyq= 500 HzLOR = Nf = 500 lines

 

所以,FFT快速傅立業轉換」的「頻譜分析」程式,就是要將時間域的信號 𝒙(𝒕),進行FFT,取得 𝒙(𝒕) 的「傅立業頻譜」,𝑿(𝒇) 就是頻率域的信號。

 

在此,可再對「傅立業頻譜𝑿(𝒇)”4W的思考:

 

1.      “What” is 𝑿(𝒇)”?𝑿(𝒇) 𝒙(𝒕) 的「傅立業頻譜(Fourier spectrum)

2.      “Why” to get 𝑿(𝒇)”?:為什麼要取得 𝑿(𝒇),就是要瞭解 𝒙(𝒕) 信號的頻譜特徵(spectrum pattern)

3.      “What” to observe 𝑿(𝒇)”?:需要瞭解 𝑿(𝒇) 是複數(complex number)。所以需要觀察 𝑿(𝒇) 的振幅值、相位角、實數部、及其虛數部。

4.      “How” to check 𝑿(𝒇)”?:如何檢查𝑿(𝒇)”的正確性呢?在此,建議分別對「餘弦波(cosine wave)及「正弦波(sine wave),進行檢查與確認。

 

接著,參閱2,已經知道「FFT頻譜分析」:是要將時間域的信號 𝒙(𝒕),進行FFT,取得 𝒙(𝒕) 的「傅立業頻譜𝑿(𝒇),就是頻率域的信號。

 

2的左側是「餘弦波」的「時間域」方程式:𝒙(𝒕)=𝑿𝐜𝐨𝐬(𝟐𝝅𝒇𝟎 𝒕),其中,𝑿 是振幅(amplitude)𝒇𝟎是頻率(frequency)。當𝑿 = 1𝒇𝟎=10 Hz時,對應的「時間波形(time waveform)如圖示,符合「餘弦波」的特徵。

 

對此「餘弦波」時間域信號 𝒙(𝒕) 進行「FFT頻譜分析」,可以得到「傅立業頻譜𝑿(𝒇),理論分析是:𝑿(𝒇)=𝑿𝛅(𝒇𝒇𝟎),其中,𝛅(𝒇𝒇𝟎)Delta函數,意義是在 𝒇=𝒇𝟎 時,其大小為 𝑿,其他頻率皆為零。在此需注意,「餘弦波」的「傅立業頻譜𝑿(𝒇)是純實數。

 

以所撰寫的「FFT頻譜分析」程式,進行分析,得到了「傅立業頻譜𝑿(𝒇)。由於 𝑿(𝒇) 是複數,參閱2左側,可以分別繪製得到,以「振幅值(amplitude)、「相位角(phase angle)、「實數部(real)、及「虛數部(imaginary)y軸,而「頻率(frequency)x軸的圖示。

 

同樣的做法,2的右側是「正弦波」的「時間域」方程式:𝒙(𝒕)=𝑿𝐬in(𝟐𝝅𝒇𝟎 𝒕),其中,是 𝑿 振幅值(amplitude)𝒇𝟎是頻率(frequency)。當𝑿 = 1𝒇𝟎=10 Hz時,對應的「時間波形(time waveform)如圖示,符合「正弦波」的特徵。

 

對此「正弦波」時間域信號 𝒙(𝒕) 進行「FFT頻譜分析」,可以得到「傅立業頻譜𝑿(𝒇),理論分析是:𝑿(𝒇)= −j𝑿𝛅(𝒇𝒇𝟎),其中,𝛅(𝒇𝒇𝟎)Delta函數,意義是在 𝒇=𝒇𝟎 時,其大小為 j𝑿,其他頻率皆為零。在此需注意,「正弦波」的「傅立業頻譜𝑿(𝒇)是純虛數。參閱2右側,是對應「正弦波」的「傅立業頻譜𝑿(𝒇)4個圖示。

 

針對「餘弦波」及「正弦波」的「傅立業頻譜𝑿(𝒇),綜合比較討論如下:

 

1.      理論分析的「傅立業頻譜𝑿(𝒇):「餘弦波」的 𝑿(𝒇) 是純實數。「正弦波」的 𝑿(𝒇) 是純虛數。只有在 𝑿(𝒇𝟎)=10 Hz時,有值,其他頻率 𝑿(𝒇)=0

2.      𝑿(𝒇) 的「振幅值(amplitude)特徵:「餘弦波」及「正弦波」都相同,在 𝒇𝟎=10 Hz時,都是 1,單是從「振幅值」是無法區別「餘弦波」及「正弦波」的差異。

3.      𝑿(𝒇) 的「相位角(phase angle) 特徵:要探討「相位角」,請參閱2中央,有關「相位角」的定義。「餘弦波」的「相位角」在 𝒇𝟎=10 Hz時,是,因為是純實數。「正弦波」的「相位角」在 𝒇𝟎=10 Hz時,是 −90°,因為是純虛數、而且是負虛數。

4.      𝑿(𝒇) 的「實數部(real) 特徵:「餘弦波」的「實數部」,在 𝒇𝟎=10 Hz時,是 𝑿 = 1,因為是純實數。「正弦波」的「實數部」在 𝒇𝟎=10 Hz時,是0,因為是純虛數。

5.      𝑿(𝒇) 的「虛數部(imaginary) 特徵:「餘弦波」的「虛數部」,在 𝒇𝟎=10 Hz時,是0,因為是純實數。「正弦波」的「虛數部」在 𝒇𝟎=10 Hz時,是 𝑿 = 1,因為是純虛數、而且是負虛數。

 

由以上討論,可以應用「餘弦波」及「正弦波」的「傅立業頻譜𝑿(𝒇)特徵,來檢查所撰寫的「FFT頻譜分析」程式之正確性。

 

所以,如果以相同的「FFT頻譜分析」程式,分別對「餘弦波」及「正弦波」進行「FFT頻譜分析」,如果能夠得到如2的各個圖示結果,那麼這個「FFT頻譜分析」程式就是正確了!

 

最後,回顧一下這個單元,主要是探討如何確認「FFT頻譜分析」程式的正確性,陳述的重點摘錄如下:

 

1.      FFT4W的思考:瞭解FFT的意義與內涵。

2.      ISOC系統方塊圖」的理念:在撰寫程式時,可以採用ISOC的理念,做對應的思考規劃及發展。

3.      𝑿(𝒇)”4W的思考:因為,FFT的「頻譜分析」,是要將時間域的信號 𝒙(𝒕),進行FFT,取得 𝒙(𝒕) 的「傅立業頻譜」,𝑿(𝒇) 就是頻率域的信號。所以,要瞭解𝑿(𝒇)”的意義與內涵。

4.      如何檢查「FFT頻譜分析」程式的正確性:分別應用「餘弦波」及「正弦波」的「傅立業頻譜𝑿(𝒇)特徵,來檢查所撰寫的「FFT頻譜分析」程式之正確性。

 

以上個人看法,請多指教!

 

王栢村

2020.08.26

文章粉絲團連

YouTube影片連結


1FFT系列:如何確認FFT頻譜分析程式的正確性?

2FFT系列:如何確認FFT頻譜分析程式的正確性?


0 意見:

張貼留言