Я использую функцию specgram
matplotlib для создания спектрограммы. Я попытался добавить цветную полосу справа от спектрограммы, чтобы показать преобразование дБ в цвет.
Однако по какой-то причине дБ, обозначенные цветной полосой, не имеют смысла.
Возможно, я не правильно сгенерировал цветовую полосу? Возможно, есть какой-то параметр, который мне нужно передать в спектрограмму?
Сигнал, который я генерирую, представляет собой синусоиду 1 кГц, 2 В пик-пик, дискретизированную на частоте 32 кГц.
Я ожидаю, что темно-красный пик на спектрограмме соответствует 0 дБ (это означает, что +1 В является моим эталоном)
Кто-нибудь знает, что не так с моим подходом?
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
использует окно Ханнинга по умолчанию, что может испортить то, что вы ожидаете от масштабирования. - person Ajean   schedule 02.12.2014