2013-07-25 92 views
0

我的任務
我有一個採樣頻率爲44100Hz的.wav格式的信號。我想獲得它的功率譜。我想用一個尺寸爲200ms,窗口週期爲50Hz的Hann窗做STFT。我強迫的頻率範圍是從0到22000Hz。

我的問題
我可以用下面的代碼得到我想要的嗎?
Matlab譜圖Hann窗口

[y, Fs, nbits, opts] = wavread('a.wav'); 
[S,F,T,P]=spectrogram(y,hanning(8820),7938,[0:100:22000],Fs); 

P從上面的代碼返回的矩陣是我想要的,對嗎?

進一步的問題

  1. 什麼是窗口的大小和它的FFT大小之間的關係?我通過他們過去是獨立的,但我不確定。任何人都可以提供簡單的答案或參考讀物?
  2. 我有一個命令specgram(x,512,8000,hamming(80)); ---我猜的初衷是:
    信號的採樣頻率:8000
    窗口NFFT:1024
    窗口期:10毫秒
    其實,我不知道該代碼的最初目的,任何人都可以看懂了嗎?

回答

2

我不認爲你正在格式化你的光譜圖代碼。

的命令如下

[S,F,T,P] = spectrogram(X,WINDOW,NOVERLAP,NFFT,Fs) 

哪裏X是你的數據,WINDOW是你的寧窗口,NOVERLAP將是你的窗口跳,NFFT是你的FFT的大小和Fs是數據的採樣率。有了這個,你會想

NFFT = 2^nextpow2(Fs*200/1000); 
spectrogram(y,hanning(NFFT),Fs/50,NFFT,Fs); 

所以你的漢寧窗然而,許多樣品是200毫秒,這取決於你的採樣率。

這應該會顯示您想要的東西,併爲您提供所需的光譜圖,然後您可以根據需要使用它。

至於如果P是你想要的問題。是的,這將返回功率譜。如果這就是你想要的,當然。