我的任务
我有一个.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是我想要的,我是对的吗?
进一步的问题
答案 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
是否符合要求的问题。是的,这将返回功率谱。如果这就是你想要的,当然。