2

在 Matlabs 最新版本中,该specgram函数被替换为spectrogram,并且文档状态:

笔记。要为移除的谱图函数获得相同的结果,请指定长度为 256 的“Hann”窗口。

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

4

3 回答 3

4

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

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

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

感谢大家的支持。

于 2010-07-27T04:12:52.927 回答
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')

频谱图

于 2010-07-20T05:29:26.430 回答
1

我目前没有尝试使用 Matlab,但hann(256,'periodic')可能是您正在寻找的。

于 2010-07-20T17:36:17.137 回答