import numpy as np signal = np.random.random(1000) # 假设原始信号长度为1000 new_signal_len = 2 ** int(np.log2(len(signal)) + 1) # 将信号长度变为最近的2的幂次方 new_signal = np.zeros(new_signal_len) new_signal[:len(signal)] = signal
import numpy as np from scipy import signal import matplotlib.pyplot as plt
signal = np.random.random(1024) f, t, Sxx = signal.spectrogram(signal, fs=2*np.pi, window='bartlett', nperseg=64, noverlap=32) plt.pcolormesh(t, f, Sxx) plt.ylabel('Frequency [Hz]') plt.xlabel('Time [sec]') plt.show()
其中,fs是采样率,nperseg是每个窗口的长度,noverlap是窗口的重叠部分长度。