1. 程式人生 > >深入淺出解釋FFT(七)——fft求頻譜圖和功率譜密度圖

深入淺出解釋FFT(七)——fft求頻譜圖和功率譜密度圖

頻譜圖:

聲音訊率與能量的關係用頻譜表示。在實際使用中,頻譜圖有三種,即線性振幅譜、對數振幅譜、自功率譜。線性振幅譜的縱座標有明確的物理量綱,是最常用的。對數振幅譜中各譜線的振幅都作了對數計算,所以其縱座標的單位是dB(分貝)。這個變換的目的是使那些振幅較低的成分相對高振幅成分得以拉高,以便觀察掩蓋在低幅噪聲中的週期訊號。自功率譜是先對測量訊號作自相關卷積,目的是去掉隨機干擾噪聲,保留並突出週期性訊號,損失了相位特徵,然後再作傅立葉變換。自功率譜圖使得週期性訊號更加突出。

功率譜圖:又叫功率譜密度圖

功率譜是功率譜密度函式的簡稱,它定義為單位頻帶內的訊號功率。它表示了訊號功率隨著頻率的變化情況,即訊號功率在頻域的分佈狀況。

功率譜表示了訊號功率隨著頻率的變化關係 常用於功率訊號(區別於能量訊號)的表述與分析,其曲線(即功率譜曲線)一般橫座標為頻率,縱座標為功率。 由於功率沒有負值,所以功率譜曲線上的縱座標也沒有負數值,功率譜曲線所覆蓋的面積在數值上等於訊號的總功率(能量)。

時域和頻域能量相等。

Parseval 定理

這裡寫圖片描述

  有限上序列x{k}的離散fourier變換是正交變換,滿足Parseval能量守恆定理,反映了序列在時域的能量等於其變換域的能量。
  關於能量定義:訊號幅度平方的積分,如果是數字訊號,能量就是各點訊號幅度值平方後的求和。
  論壇帖子中關於等式關係給出的結論是:

求和 (x(tn)^2)T=RMS^2*Ttotal=求和(P(fn))

△f*Ttotal
其中,x(tn)是n個x(t)時域取樣資料,T是時間間隔,Ttotal是時間總長,
P(fn)是第n個功率譜密度值,△f是FFT頻率間隔

 最後的結論是相等的,但是訊號的能量到底是sum(x.^2),還是sum(x.^2)*T?按照定義來說是前者沒錯。但是絕對的能量計算若不跟取樣頻率(取樣間隔)結合起來,又有什麼對比作用?
 同樣1000個點幅值為1,一組波形是1秒內採到的,另一組波形是10秒內採到的,按公式算,訊號的能量相等,按sum(x.^2)*T計算,10秒採集到的波形的能量更大。
 現實情況中,比較兩個波形的能量或有效值,都是取樣率相同,取樣時間相同,所有不會遇到如此糾結的問題。
  生成一組訊號:

fs=1000;

>> N=1000;
>> n=0:N-1;
>> t=n/fs;
>> x=sin(2*pi*100*t);
>> nfft=1024;
>> deltF=fs/nfft;
>> window=hanning(N);
>> %直接法,periodogram函式得到的功率譜密度
>>[Pxx_period,f_period]=periodogram(x,window,nfft,fs); 
> noverlap=50; 
>>[Pxx_welch,f_welch]=pwelch(x,window,noverlap,nfft,fs);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

計算原始訊號的有效值為: 0.0224
畫出頻譜與功率譜密度為:
幅值譜 與 功率譜
幅值譜的幅值理論上應為1,不到1的原因是fft變換的點數與取樣點數不同所致。
利用FFT幅值譜的平方/N ,畫功率譜密度結果跟上右圖差不多。

 xw=1.633*x.*window';     % 加漢寧窗(恢復係數為1.633),能量修正係數使加窗後能量保證不變
mag=abs(fft(xw,nfft));
Pxx_1=mag.^2/N/fs;
f=(0:nfft/2-1)/nfft*fs;
plot(f,Pxx_11(1:512)*2),title('Pxx_11')
  • 1
  • 2
  • 3
  • 4
  • 5
  • 1
  • 2
  • 3
  • 4
  • 5

關於功率譜密度計算,先做自相關計算,再做FFT也能得到功率譜密度。
最後結果為:
這裡寫圖片描述
summary:
當取樣點數=nfft時,deltF*N/fs=1;
  功率譜密度直接求和即是頻域能量。
  用幅值譜的平方估計頻域能量時,除完點數,還要除以取樣頻率。
  時域能量要*取樣間隔(1/fs)
有效值的平方*取樣時間=時域能量;