简体   繁体   English

如何通过频谱图绘制时频图?

[英]how to plot time-frequency graph through spectrogram?

I'm trying to plot time-frequency graph through a spectrogram. 我正在尝试通过频谱图绘制时频图。 I want to make one line graph (x axis = time, y axis = frequency). 我想制作一个折线图(x轴=时间,y轴=频率)。 I use Python and signal.stft function and get a spectrogram. 我使用Python和signal.stft函数并获得了一个频谱图。 I also calculate max frequency value in each time step. 我还计算每个时间步的最大频率值。 But I can't get an answer. 但是我找不到答案。 What is the problem? 问题是什么?

If I understood you correctly you want to plot a curve of max frequency on top of spectrogram? 如果我对您的理解正确,那么您想在频谱图上方绘制最大频率曲线吗? If yes you can simply call a second plot call of matplotlib after spectrogram. 如果是,您可以在频谱图之后简单地调用matplotlib的第二个绘图调用。 Something like this: 像这样:

f, t, Zxx = signal.stft(x, fs, nperseg=1000)
max_f = np.argmax(data, axis=1)  # data has shape (time x frequency)
plt.pcolormesh(t, f, np.abs(Zxx), vmin=0, vmax=amp)
plt.plot(np.arange(max_f.shape[0]), max_f)
plt.ylabel('Frequency [Hz]')
plt.xlabel('Time [sec]')
plt.show()

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM