Matlab specgram过时vs谱图替换

时间:2010-07-20 04:38:38

标签: matlab signal-processing spectrogram

在Matlabs最新版本中,specgram函数正被spectrogram取代,文档说明:

  

注意。要获取移除的specgram函数的相同结果,请指定长度为256的“Hann”窗口。

不幸的是,这似乎对我不起作用,如果我使用spectrogram(signal,hann(256)),结果与specgram(signal)不同,尽管两者非常相似。有没有办法获得完全相同的输出?

3 个答案:

答案 0 :(得分:4)

好吧,我只是偶然发现了解决方案:

specgram(singal) = spectrogram(signal, hanning(256))

因为hannhanning在Matlab中不是一回事。

感谢大家的支持。

答案 1 :(得分:3)

我相信它们在每个函数中的计算方式略有不同。这是我能得到的最好的:

sig = rand(1280,1);
Fs = 2;
nfft = 256;
numoverlap = 128;
window = hanning(nfft);

%# specgram
subplot(121), specgram(sig,nfft,Fs,window,numoverlap)

%# spectrogram: make it look like specgram
[S,F,T,P] = spectrogram(sig,window,numoverlap,nfft,Fs);
subplot(122), imagesc(T, F, 20*log10(P))
axis xy, colormap(jet), ylabel('Frequency')

spectrogram

答案 2 :(得分:1)

我目前没有Matlab可以尝试,但hann(256,'periodic')可能就是你要找的东西。