как построить частотно-временной график через спектрограмму?

Я пытаюсь построить частотно-временной график через спектрограмму. Я хочу сделать один линейный график (ось x = время, ось y = частота). Я использую Python и функцию signal.stft и получаю спектрограмму. Я также рассчитываю максимальное значение частоты на каждом временном шаге. Но я не могу получить ответ. В чем проблема?


person YUN    schedule 04.11.2018    source источник


Ответы (1)


Если я правильно вас понял, вы хотите построить кривую максимальной частоты поверх спектрограммы? Если да, вы можете просто вызвать второй вызов сюжета matplotlib после спектрограммы. Что-то вроде этого:

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()
person dsalaj    schedule 04.11.2018