間接法求功率譜及小技巧

間接法先由採樣序列x(n)估計其出自相關函數R(n),然後對R(n)進行傅立葉變換,取模後便得到x(n)的功率譜估計。

 

Matlab代碼示例:
clear;
Fs=1000; %
採樣頻率

n=0:1/Fs:1;
%
產生含有噪聲的序列
xn=cos(2*pi*40*n)+3*cos(2*pi*100*n)+randn(size(n));
nfft=1024;
cxn=xcorr(xn,'unbiased'); %
計算序列的自相關函數
CXk=fft(cxn,nfft);
Pxx=abs(CXk);
index=0:round(nfft/2-1);
k=index*Fs/nfft;
plot(k,Pxx(index+1));

其它求功率譜的方法請參考經典功率譜估計

小技巧:

1. 上述代碼中求得的功率譜Pxx一共有nfft個值,所以其頻率分辨度爲Fs/nfft。注意Pxx是對稱的,這是因爲根據抽樣定理,源信號的最高頻率爲Fs/2。上述代碼中只顯示了前半部分,也就是0—Fs/2這一段。

2. 對隨機信號來說,時間上是無限的,樣本也是無窮多,因此其能量是無限的,屬於功率信號。但在實際計算過程中,所涉及的樣本數肯定是有限的,如果此時所有樣本值非負或者非正,採用功率譜估計方法會得到無法解釋的結果(功率主要分佈在頻率爲0或者附近的點,i don't konw why!!!)。此時可以先對採樣序列進行預處理(減去均值),使得處理後的序列均值爲0,然後進行功率譜估計會得到正確的結果。

 

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