Matlab谱图Hann窗口

时间:2013-07-25 14:09:03

标签: matlab spectrogram

我的任务
我有一个.wav格式的信号,采样频率为44100Hz。我想获得它的功率谱。我想用一个大小为200ms的Hann窗口进行STFT,窗口周期为50Hz。我强制的频率范围是0~22000Hz。

我的问题
我可以用以下代码得到我想要的东西吗?

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

从上面的代码返回的矩阵P是我想要的,我是对的吗?

进一步的问题

  1. 窗口大小与其FFT大小之间的关系是什么?我通过它们过去是独立的但我不确定。任何人都可以提供一个简单的答案或一些参考阅读?
  2. 我有一个命令规格(x,512,8000,汉明(80)); ---我猜最初的目的是:
    信号采样频率:8000
    窗口nfft:1024
    窗口期:10ms
    实际上,我不确定这段代码的最初目的,任何人都可以阅读它吗?

1 个答案:

答案 0 :(得分: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);

所以你的Hanning窗口有很多样本是200ms,这取决于你的采样率。

这应该按照您想要的方式显示,并为您提供所需的光谱图,然后您可以随意使用它。

关于P是否符合要求的问题。是的,这将返回功率谱。如果这就是你想要的,当然。