由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')
答案 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)';