經典法譜估計(2)自相關法MATLAB及Python實現

原理

對於確定性信號,可以用FFT做頻域分析,得到其頻域特性。對於平穩隨機信號,因爲是無限能量的信號,故其傅里葉變換不存在(在Z平面不滿足絕對可和條件)。如果是截取隨機序列的一段用FFT做頻域分析,那麼不同段求出的頻譜必然是不同的,可見這種分析並無意義。而自相關序列是一個能量有限的確定性序列,故能滿足傅里葉變換條件,且由維納辛欽定理可知,其傅里葉變換就是原序列的功率譜,因此我們採用下面這種方法,也叫BT法。
平穩隨機信號的自相關函數的定義爲:
在這裏插入圖片描述
式中,x(n)和y(n)都是平穩隨機信號,“*”代表取共軛。如果x(n)和y(n)都是實隨機序列,則上面兩式成爲
在這裏插入圖片描述
再由維納辛欽定理知,隨機信號自相關函數的傅里葉變換是信號的功率譜密度,則有
在這裏插入圖片描述
與上面相同,我們需要將其進行離散化N點取樣:
在這裏插入圖片描述
至此,我們可以畫出隨機信號的功率譜密度。

程序和結果

(出於維護版權原因,此處只放截圖)
MATLAB
程序:
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
結果:
在這裏插入圖片描述
Python
程序:
在這裏插入圖片描述
在這裏插入圖片描述
結果:
在這裏插入圖片描述

分析

由上圖可見,我給程序輸入的N爲512,此時我們可以從功率譜圖中看到四個峯,呈現對稱分佈,信號中f1=0.1,f2=0.13,在圖中我們可以看到對應的位置出現了峯值,由於給定幅度大小不同,故峯值大小有很大差別。且由於輸入的x(n)爲一個實序列,從而其自相關函數 是實偶函數,根據“實偶虛奇”,它所對應的DFT爲偶對稱,這也就是爲什麼會出現左右對稱的四個峯。然後我利用了尋峯函數來得出峯值對應的橫座標(Python中是自己寫了一個尋峯估計頻率的方法)
程序中將所有的峯值及其索引分別放入到兩個數組中,且根據峯值大小降序排列,之所以採用降序排列,有借鑑過網上的經驗,同時經過自己思考,認爲是在噪聲功率遠小於信號功率的情況下,在很接近信號頻率的附近,噪聲產生的擾動應該較小,幾乎可以忽略,所以在信號頻率附近的峯值應該可以說幾乎是純信號的峯值,而沒有噪聲引起的小峯,可想而知,純信號的兩個峯應該是最大的兩個,而在遠離信號頻率的位置上,噪聲的擾動是相對較大的,所以我們可以通過降序排列,確定最大的兩個峯值和其索引位置。

(因原博客是以word形式寫的,CSDN不支持Mathtype公式,故部分地方直接採用了截圖形式)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章