编写一段时频分析方法程序
时间: 2023-12-09 13:05:07 浏览: 25
以下是一个简单的时频分析方法程序,使用了短时傅里叶变换(Short-Time Fourier Transform,STFT)。
```python
import numpy as np
import scipy.signal as signal
# 生成信号
fs = 1000 # 采样频率
t = np.arange(0, 1, 1/fs) # 时间轴
f1 = 50 # 信号频率
f2 = 200
x = np.sin(2*np.pi*f1*t) + np.sin(2*np.pi*f2*t)
# 短时傅里叶变换
window = signal.windows.hamming(256) # 窗口函数
nperseg = 256 # 每个窗口的点数
noverlap = nperseg//2 # 窗口重叠的点数
f, t, Zxx = signal.stft(x, fs=fs, window=window, nperseg=nperseg, noverlap=noverlap)
# 绘制时频图
import matplotlib.pyplot as plt
plt.pcolormesh(t, f, np.abs(Zxx), cmap='viridis')
plt.title('STFT Magnitude')
plt.ylabel('Frequency [Hz]')
plt.xlabel('Time [sec]')
plt.show()
```
该程序生成了一个包含两个正弦信号的信号,然后对其进行STFT分析,并绘制出时频图。
可以看到,在50 Hz和200 Hz附近,时频图上有明显的峰值,这说明信号中存在这两个频率的成分。