Как я могу построить спектрограмму matplotlib.mlab, сохраняя значения частоты и времени? - PullRequest
0 голосов
/ 23 января 2020

Я пытаюсь построить карту цветов, и мне нужно использовать mlab.specgram () для выполнения взаимной корреляции двух функций в частотной области, поэтому я не могу использовать pyplot.specgram (). Я использовал pyplot.imshow для построения цветовой карты взаимной корреляции, но в результате оси - это просто номера индексов, а не фактические значения времени, соответствующие мощности, показанной на цветовой карте.

Я пытался изменить метки, используя xticks () / yticks () и аргумент экстента, но все, что он делает, это показывает мне небольшую часть моей цветовой карты вместо изменения меток.

Есть ли способ изменить масштаб моих осей, чтобы он соответствовал фактической частоте и времени?

Для справки:

# My spectrograms:
spec_H1, freqs, t = mlab.specgram(H_filt, NFFT=NFFT, Fs=fs, noverlap=NOVL, mode=mode) 
spec_L1, freqs, t = mlab.specgram(L_filt, NFFT=NFFT, Fs=fs, noverlap=NOVL, mode=mode)

# The cross-correlation:
X = np.real(spec_H1 * np.conj(spec_L1))

# The figure:
plt.figure(figsize=(10,10))
plt.imshow(abs(X), cmap = 'jet')
plt.colorbar() 
plt.ylim(0,200)
plt.xlim(0,500)

The figure

Как вы можете видеть, например, временная ось (x) должна работать от 0 до 4 секунд, но она выбирается так, чтобы она работала от 0 до 500. Как мне это изменить?

...