頻譜為什麼會洩漏?


頻譜為什麼會洩漏?

更多通信類文章,在點擊班長:主頁→“文章”


<strong>頻譜會洩漏?

頻率的定義:物質在1s內完成周期性變化的次數叫做頻率,常用f表示。

在通信與信號處理中的頻譜,主要通過傅里葉級數和傅里葉變換得到。

其中滿足狄裡赫利條件的週期信號可以分解為若干不同頻率的正弦波。這些正弦波中,頻率最低的稱為信號的基波,其餘稱為信號的諧波。以諧波的頻率為橫座標,幅值(大小)為縱座標,繪製的系列圖,稱為頻譜。頻譜能夠準確反映信號的內部構造。見圖1。

頻譜為什麼會洩漏?

圖1 方波信號的傅里葉級數展開

你見與不見,頻譜就在那裡

有一種情況,我們需要考慮。

那就是當我們用計算機處理信號之時,總會截取一段信號。

這很容易理解,因為你不能分析無限長的週期信號。即使是非週期信號,也只能截取一小段。

這還與傳感器靈敏度和存儲器容量有關。

那麼問題就來了,我們用截取的信號去做頻譜分析,那麼得到的頻譜是截取信號的。並不是原始信號的。

頻譜為什麼會洩漏?

圖2 實際的信號被截取一部分,這一部分信號作為頻譜分析的輸入

這兩者頻譜之前的差別,可以看做是洩漏

官方的解釋是這樣的:

信號為無限長序列,運算需要截取其中一部分(截斷),於是需要加窗函數。加了窗函數相當於時域相乘,也相當於頻域卷積,於是頻譜中除了本來該有的主瓣之外,還會出現本不該有的旁瓣,這就是頻譜洩露!為了減弱頻譜洩漏,可以採用加權的窗函數,加權的窗函數包括平頂窗、漢寧窗、高斯窗等等。而未加權的矩形窗洩漏最為嚴重。

這個解釋,涉及到時域、頻域、窗函數、卷積、主瓣、旁瓣等抽象概念。

但是意思和我的解釋一樣。

頻譜為什麼會洩漏?

圖3 信號的截取過程

直觀的表示

在現實中,信號是測量工具測量得到的,必然具有時間限制,超出測量間隔的信號不能被知道。

例如,如果測量一個無限長的正弦波連續序列,在某個時候,我們需要終止我們的觀測來做進一步的分析。

除了其他因素外,測量系統本身的限制(例如:緩衝區大小)也對時間造成了限制。

圖4為一個無限長的週期信號,現在我們選取一段信號,圖4中為黑色虛線中間的信號,作為分析信號。

頻譜分析通常使用快速傅里葉FFT函數,具體可以參考我之前的文章,見文章最後。

頻譜為什麼會洩漏?

圖4 截取信號的過程,往往會造成一定的“缺陷”

FFT實際上是假設信號在測量的間隔之週期重複,因此FFT假設信號是連續的(在概念上或者在存儲器內,重複地並列測量信號)。

這導致假定信號中的缺陷(見圖4中箭頭部分),就是尖銳部分,會在時間域內不斷的重複。

而這些尖銳的不連續性將在頻域中擴散,導致頻譜與原始的信號的頻譜不一致.

這種不一致,直觀的看,就像洩漏一樣。

現在再舉一次正弦波的例子,見圖5。

頻譜為什麼會洩漏?

圖5 3Hz與2.5Hz正弦序列的頻譜對比

圖5為Matlab軟件繪製。

左上方為正弦序列,頻率為3Hz,週期為1/3秒,序列總時長為1秒鐘。

在1秒鐘內,正好完整的3個週期。

這個序列為單一頻率3Hz,沒有其他諧波頻率。

對其進行FFT分析,必然在頻率軸3Hz處有幅度值譜線。在0 1 2 4 5 6Hz頻率處幅度值為0。

現在略微調整,序列總時長還是1秒鐘,頻率改為2.5Hz,週期為1/2.5=0.4秒,那麼正好有2.5個週期。

這個序列為單一頻率2.5Hz,是不是它的頻譜線在2,5Hz處呢?

看右下圖,很明顯不是。

頻率還是分佈在0 1 2 3 4 5 6Hz這些整數倍的頻率處,卻都有一定的幅度值了。

如果把2.5Hz的正弦序列展開,可以看到更清楚,如圖6所示。

頻譜為什麼會洩漏?

圖6 2.5Hz截取信號的週期延拓

圖6中已經不是一個連續的正弦序列了,而是在1s、2s、…等整數秒處都會有不連續。

這些不連續隱藏著其他頻率,就會帶入到頻域中去。

和抽樣點N數有關?

考慮頻率f_x=10Hz的純正弦信號,並在計算機內存中表示,該信號被觀察1秒,採樣頻率f_s=100Hz。

現在,緩衝器中將有100個樣本,緩衝器包含波形週期的整數倍,在這種情況下是10個週期。

用n點DFT對信號樣本進行了分析。

這裡考慮了兩種情況進行研究:

  1. FFT大小n與信號樣本的長度相同,即n=100;
  2. FFT大小設置為2的下一次冪,該次冪符合信號樣本,即n=128;

結果繪製如下:

頻譜為什麼會洩漏?

圖7 正弦序列在不同N下的頻譜圖

為什麼頻譜在n=100時和n=128時,在10Hz附近會有一個明顯的尖峰。

這是由於不同的頻率分辨率——分辨不同、相鄰頻率能力的度量。

對於情況1,頻率分辨率為△f=f_s/n =100/10=1Hz。這意味著頻率間隔1赫茲,所以比較在整數10Hz處有峰值。

對於情況2,頻率分辨率為△f=f_s/128=100/128=0.7813Hz。在這種頻率分辨率下,頻率圖7的x軸不能具有10Hz的精確值。

相反,最近的相鄰頻率間隔分別為9.375Hz和10.1563Hz。

因此,頻譜不能表示10Hz處的值,信號的能量被洩漏到相鄰的頻率點處,導致頻譜洩漏。

理論分析


頻譜為什麼會洩漏?

圖8 DFS/DFT的示意圖

要想理解DFT或者FFT,圖8是我每次必放的圖形。

這幅圖就是離散傅里葉級數、離散傅里葉變換的形象展示。

時域、頻域都是離散的,

時域的週期為T1,對應頻域的△f為圖中的f1,△f = f1=1/T1;

時域的採樣週期為Ts,對應頻域的週期為fs=1/Ts;

且採樣頻率fs/f1=fs/△f=N,N為主值區間的點數,就是常說的多少多少點FFT。

fs、△f、N這三者的取值,會影響頻譜的形狀與是否洩漏。

圖9 為頻譜洩漏的示意圖。

頻譜為什麼會洩漏?

圖9 頻譜洩漏示意圖

參考文獻

[1]

[2]

[3]

[4]https://www.gaussianwaves.com/2011/01/fft-and-spectral-leakage-2/

[5]https://community.sw.siemens.com/s/article/windows-and-spectral-leakage


歡迎在評論區留言討論。


分享到:


相關文章: