為了當干貨,本文不浪費篇幅闡述FFT的原理和算法,這些信息非常多,我們假定客戶們已經知曉,有了一些基礎。不過說實話,工程師并不一定需要懂原理和會算法,我們大概知道它的意思就行,畢竟會用才是最關鍵的。 我們先提煉出幾個重要的問題點,一般的工程師們只要了解這幾點就夠用了。 問題1:我們可以用示波器看到某個信號的時域波形,為什么還要用FFT看這個信號的頻域波形? 答案是,現實中很多信號的波形看起來長得很復雜,用數學描述它極其困難,甚至人直觀的描述它都做不到,那就更談不上分析它和處理它了。這時候,我們只能換一個思路和方法,在頻域上拆解它,就更容易分析處理了。 舉個例子:
圖片1.png (54.84 KB, 下載次數: 70)
下載附件
2020-6-30 15:15 上傳
上面這張圖,左側是時域波形,右側是它的頻域FFT波形。從時域波形來看,很簡單,就是一個幅值100,頻率3赫茲的正弦波。這種情況下,根本沒有必要做FFT變換看頻域波形。任何關于這個信號的描述和表達都很清晰明了,有明確而簡單的數學公式來表示這個信號,要對這個信號做任何分析和處理都有一大堆經典公式和大量的經驗方法。 那么來看下面這個圖:
圖片2.png (29.59 KB, 下載次數: 74)
下載附件
2020-6-30 15:15 上傳
現實中,你可能遇到的是這樣的一個信號,這是它的時域波形,時域波形也就是時間領域波形的意思,就是橫坐標是時間的推移,跟我們的現實直覺認知相符合。那么對面這樣一個時域波形,誰能描述清楚它的特征,用簡單的數學公式近似表述它,怎么分析和處理它? 這時候就要用到FFT的頻域分析,經過分析,我們可以知道,其實它就是三個正弦波疊加而成的:
圖片3.png (103.23 KB, 下載次數: 78)
下載附件
2020-6-30 15:15 上傳
這樣我們就能簡單準確的表述,分析和處理這個信號。 再看一個類似的例子:
圖片4.png (89.03 KB, 下載次數: 65)
下載附件
2020-6-30 15:15 上傳
圖片5.png (26.63 KB, 下載次數: 58)
下載附件
2020-6-30 15:15 上傳
問題2:用FFT做頻譜分析具有普適性嗎?什么樣的信號才能用FFT分析? 答案是肯定的,工程上,我們可以對你采集顯示的任何波形進行FFT分析。 通過上面的例子,可能有人會有疑問,雖然上面看到復雜的波形其實是由三個標準的正弦波疊加起來產生的,這是不是故意找的特例?現實中的波形大部分不是這樣由三個標準正弦波疊加出來的怎么辦呢? 是的,上面的例子的確是找的特例,雖然是特例,但是能很直觀的說明問題。那么現實中其他的隨機的復雜波形怎么辦?沒關系,FFT厲害的地方就在這里,理論上,任意波形都可以通過FFT拆解成一系列幅值頻率相位不同的標準正弦波疊加而成。
圖片6.png (40.19 KB, 下載次數: 81)
下載附件
2020-6-30 15:15 上傳
這就類似于一束白光,其實可以拆解成頻率不同的色光疊加而成的。時域信號就是那束白光,棱鏡就是FFT,拆解出來的不同顏色的光,就是頻域波形的不同頻率點上的譜線。
圖片7.png (115.93 KB, 下載次數: 69)
下載附件
2020-6-30 15:15 上傳
我們用LOTO虛擬USB示波器的OSCA02為例,先測一個標準正弦波的FFT頻譜,將時域波形與它對應的頻域波形對比看看。
圖片8.png (203.38 KB, 下載次數: 65)
下載附件
2020-6-30 15:15 上傳
可以看出,一個標準的正弦波,它的FFT頻譜就是在對應的頻率上的一個高度為正弦波幅值的豎線。 然后我們再測一下一個方波信號對應的FFT頻譜的波形:
圖片9.png (93.85 KB, 下載次數: 67)
下載附件
2020-6-30 15:15 上傳
可以看出方波信號可以拆解成一系列正弦波的疊加,這些正弦波就是頻譜波形上的那些小豎線。頻率與方波頻率相同的正弦波分量我們一般稱為基波,頻率為3倍的正弦波分量稱為3次諧波,然后5次,7次諧波等等一直到無限。
圖片10.png (24.42 KB, 下載次數: 56)
下載附件
2020-6-30 15:15 上傳
理論上,這個方波是由無限個正弦波分量疊加而成的。工程上,我們其實不需要去處理無限多個分量,因為這樣工作量太大且沒有必要,一般只是取前多少個分量進行分析處理就可以近似達成目標了。下圖所示,一個方波,取前多少個正弦波分量疊加以后變成的不同的方波。可以看到,取的分量數(n)越多越接近原始方波,其他現實波形的道理是一樣的
圖片11.png (261.9 KB, 下載次數: 83)
下載附件
2020-6-30 15:15 上傳
關于LOTO示波器使用FFT功能的視頻演示如下: 問題3:FFT頻譜分析有什么用? 典型的應用場景有很多。 比如說,當你的信號上被噪聲干擾了,你想去掉這個噪聲。在時域波形上看,只能看出是一個密集的上躥下跳的噪聲,完全看不出其他有助于解決掉噪聲的信息。這時候用FFT分析,可以得知噪聲分布的頻率范圍,可以針對一些主要的噪聲頻點進行有針對性的濾波處理。 再比如,音頻應用中,通過人耳朵很難客觀和標準化分辨出來一些音頻處理單元的頻率范圍。使用FFT對音頻處理單元的信號進行掃頻和分析,可以定量的得出音頻響應的頻譜范圍,從而快速確定音頻單元是否合格。 關于FFT使用時候的誤差與頻譜泄漏: 工程中最容易出現的FFT誤差,是由于參與FFT計算的采樣點數相對于這些采樣點數覆蓋的信號信息量太少了。舉個簡化的例子:
圖片12.png (85.25 KB, 下載次數: 66)
下載附件
2020-6-30 15:15 上傳
上圖中的假如一個正弦波(上方)被采集到,如果在做FFT分析的時候由于參與FFT點數的設置,可能只取了黃色區域的局部波形數據進行FFT計算。那么在FFT算法看來,它會認為FFT針對的信號是黃色部分的周期性延宕,如圖中下方的波形所示。 顯而易見,這樣進行FFT計算得出的結果肯定是錯誤的。而且可以推理,使用的FFT點數越少,錯誤越嚴重。 我們實測一下來看: 還有一種情況是,上面提到的FFT取點數的時候,點數足夠大,但是并沒有取到剛好整周期上,稍微偏差一點,這樣進行FFT分析并不會產生錯誤,但是會有些誤差,這些誤差正是由于這些小偏差引起的,這是難以避免的,專業術語叫做頻譜泄漏,如下圖所示。
圖片13.png (109.42 KB, 下載次數: 54)
下載附件
2020-6-30 15:15 上傳
在頻譜泄漏在頻譜上的表現為在正確的主頻譜旁邊出現不該出現的短小的頻譜。 我們用USB虛擬示波器實測一下頻譜泄漏:
圖片14.png (789.96 KB, 下載次數: 70)
下載附件
2020-6-30 15:15 上傳
上圖是實測的1K頻率的正弦波的時域波形和FFT幅頻曲線。理論上,FFT曲線應該是在1K頻率分量上的一根豎線,如A點所示,但是實際FFT結果并不是理想的在A處的一根豎直線,而會在臨近的B點和C點還有一定的頻譜值。B和C點不陡降到0是頻率泄漏導致的。 解決頻譜泄漏的最常見的方法是加窗函數: 我們一般默認用的是矩形窗,不同的窗函數能不同程度的改善譜線的圓潤程度。以上面的頻譜泄漏圖為例,由于突然截斷造成周期延拓時兩個周期相鄰處出現了信號突變,這種突變,代表的是信號包含了高次諧波。加上合適的窗函數,可以把這個突變變得圓滑一些,從而抑制高次諧波。 但是,我們也可以這樣想,頻譜泄漏圖中的下方信號就是真實信號,那么,加上這樣的窗函數反而得到了錯誤的結果。
圖片15.png (75.61 KB, 下載次數: 71)
下載附件
2020-6-30 15:15 上傳
上圖為不同窗函數的圓潤效果,坦白講,一般是不太用窗函數的,除非非常了解自己的應用情況,使用窗函數的時候計算負擔比較重也是我不太常用它們的原因之一。
|