Matlab:将频谱图保存在变量中并显示它

时间:2018-02-26 10:14:39

标签: matlab spectrogram

我想要的很简单,或者我想。我有很多计算和显示的光谱,计算起来很耗时,所以我想将它们保存在变量中以显示它们而不需要重新计算。问题是,如果我直接使用函数spectogram(),我无法找到一种方式来绘制它们。

示例:

sampling_rate = 100;
spectrogram(data,100,20,[],sampling_rate,'yaxis');
caxis([-20 60])

这会完全按照我的要求显示一个光谱图:

Spectrogram

我阅读了文档,我明白我可以通过这样做来保存结果:

[S,F,T] = spectrogram(data,100,20,[],sampling_rate);

另外,我知道函数spectogram内部调用surf()。

我发现this post似乎通过这样做解决了我的问题:

[S,F,T] = spectrogram(data,100,20,[],sampling_rate);
surf(T,F,abs(S),'EdgeColor','none');
axis tight; view(0,90);

但是我得到了这个情节,这远远超出我的预期:

Empty spectrogram

轴标签和颜色条消失了,颜色完全没有缩放。如果我通过以前添加colorbar; caxis([-20 60]);手动执行此操作,我会得到这个:

Bad spectrogram

是不是有一个简单的解决方案来保存眼镜并按命令显示?

S = spectogram(...)然后plot(S)

0 个答案:

没有答案