短时傅里叶变换的python代码
时间: 2024-01-28 18:12:53 浏览: 81
短时傅里叶变换(Short-Time Fourier Transform,STFT)是一种将信号从时域转换到频域的方法,它可以用于分析信号的频谱特征。在Python中,可以使用`scipy`库中的`stft`函数来实现短时傅里叶变换。
下面是一个使用`stft`函数进行短时傅里叶变换的示例代码:
```python
import numpy as np
from scipy.signal import stft
import matplotlib.pyplot as plt
# 生成示例信号
t = np.linspace(0, 1, 1000)
x = np.sin(2 * np.pi * 10 * t) + np.sin(2 * np.pi * 20 * t)
# 进行短时傅里叶变换
f, t, Zxx = stft(x, fs=1000, nperseg=100, noverlap=50)
# 绘制频谱图
plt.pcolormesh(t, f, np.abs(Zxx), shading='gouraud')
plt.colorbar(label='Amplitude')
plt.title('STFT Magnitude')
plt.xlabel('Time')
plt.ylabel('Frequency')
plt.show()
```
在上述代码中,首先生成了一个示例信号`x`,然后使用`stft`函数对信号进行短时傅里叶变换。`fs`参数表示信号的采样率,`nperseg`参数表示每个窗口的长度,`noverlap`参数表示窗口之间的重叠长度。最后,使用`plt.pcolormesh`函数绘制频谱图。
运行上述代码,将会得到一个频谱图,横轴表示时间,纵轴表示频率,颜色表示幅度。
阅读全文