2013-07-25 93 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是你想要的问题。是的,这将返回功率谱。如果这就是你想要的,当然。