【发布时间】:2018-02-27 06:33:09
【问题描述】:
我想要的很简单,至少我是这么想的。我有许多要计算和显示的频谱图,计算起来很耗时,所以我想将它们保存在变量中以显示它们而不重做计算。问题是,如果我直接使用函数 spectogram(),我无法找到一种方法来绘制它们的样子。
例子:
sampling_rate = 100;
spectrogram(data,100,20,[],sampling_rate,'yaxis');
caxis([-20 60])
这会完全按照我的要求显示频谱图:
我阅读了文档,我知道我可以通过执行以下操作来保存结果:
[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);
但我得到了这个情节,这与我的预期相差甚远:
轴标签和颜色条消失了,颜色完全没有缩放。如果我像以前一样通过添加colorbar; caxis([-20 60]); 手动执行此操作,我会得到这个东西:
难道没有一个简单的解决方案来保存频谱图并在命令中显示它吗?
喜欢S = spectogram(...) 然后plot(S)?
【问题讨论】:
标签: matlab spectrogram