更改MATLAB频谱图的轴单位

时间:2019-06-02 16:30:31

标签: matlab matlab-figure spectrogram

spectrogram生成的图形的轴单位如何被强制始终保持为x轴的“ s”(秒)和y轴的“ Hz”(赫兹)?

以下频谱图可以用作演示者。在此示例中,它们已被MATLAB自动调整为“分钟”和“ kHz”。

t = 0:0.0001:200;
x = chirp(t,100,1,200,'quadratic');
spectrogram(x,128,120,128,2e3,'yaxis')

1 个答案:

答案 0 :(得分:2)

spectrogram函数调用pspectrogram进行实际工作,然后依次调用engunits来确定适合您信号的“工程单位”。显然spectrogram没有输入选项可以避免单位转换。

因此,最好的方法似乎是获取spectrogram的实际输出并自己绘制图像,而无需进行单位转换:

[~,F,T,P] = spectrogram(x,128,120,128,2e3,'yaxis');
imagesc(T, F, 10*log10(P+eps)) % add eps like pspectrogram does
axis xy
ylabel('Frequency (Hz)')
xlabel('Time (s)')
h = colorbar;
h.Label.String = 'Power/frequency (dB/Hz)';
  • 原始代码生成的图像:

    enter image description here

  • 使用上述代码获得的图片:

    enter image description here