我正在使用matplotlib的
这是我得到的结果频谱图:
specgram
函数生成一个频谱图。我尝试在频谱图旁边添加一个颜色条,以指示dB到颜色的映射关系。但是,颜色条显示的dB值似乎不正确。也许我没有正确地生成颜色条?或者我需要传递一些参数给specgram函数? 我所生成的信号是32Khz采样率下的1Khz、2Vpp正弦信号。我预期,在频谱图上深红色峰值对应0dB(意味着+1V是我的参考)。有人知道我的方法有什么问题吗?def plot_specgram(data, title='', x_label='', y_label='', fig_size=None):
fig = plt.figure()
if fig_size != None:
fig.set_size_inches(fig_size[0], fig_size[1])
ax = fig.add_subplot(111)
ax.set_title(title)
ax.set_xlabel(x_label)
ax.set_ylabel(y_label)
pxx, freq, t, cax = plt.specgram(data, Fs=32000)
fig.colorbar(cax).set_label('Intensity [dB]')
plot_specgram(a,title='Spectrogram', x_label='time (in seconds)', y_label='frequency', fig_size=(14,8))
这是我得到的结果频谱图:
specgram
的默认窗口函数是一个汉宁窗口,这可能会影响你对缩放的期望。 - Ajean