Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Vẽ phổ tín hiệu (spectrogram) giống pylab.specgram() trong Matplotlib


Các bước

  1. Thiết lập kích thước hình và padding.
  2. Tạo dữ liệu t, s1, s2, nse, x, NFFT, Fs bằng numpy.
  3. Tạo subplots 2 hàng.
  4. Vẽ tín hiệu thời gian t, x.
  5. Cấu hình grid trục X.
  6. Đặt margin trục X = 0.
  7. Vẽ spectrogram bằng specgram().
  8. Cấu hình grid cho spectrogram.
  9. Gọi show().

Ví dụ

import matplotlib.pyplot as plt
import numpy as np

plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True

dt = 0.0005
t = np.arange(0.0, 20.0, dt)
s1 = np.sin(2 * np.pi * 100 * t)
s2 = 2 * np.sin(2 * np.pi * 400 * t)
s2[t <= 10] = s2[12 <= t] = 0
nse = 0.01 * np.random.random(size=len(t))
x = s1 + s2 + nse
NFFT = 1024
Fs = int(1.0 / dt)

fig, (ax1, ax2) = plt.subplots(nrows=2)
ax1.plot(t, x)
ax1.grid(axis="x", ls="dotted", lw=2, color="red")
ax1.margins(x=0)
Pxx, freqs, bins, im = ax2.specgram(x, NFFT=NFFT, Fs=Fs, noverlap=900)
ax2.grid(axis="x", ls="dotted", lw=2, color="red")
plt.show()

Kết quả

Vẽ phổ tín hiệu (spectrogram) giống pylab.specgram() trong Matplotlib