Python 短时傅里叶变换实现
时间: 2023-11-05 10:53:19 浏览: 147
短时傅里叶变换
Python中可以使用SciPy库中的`stft`函数来实现短时傅里叶变换(STFT)。下面是一个简单的Python代码示例:
```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*50*t) + np.sin(2*np.pi*120*t)
# 进行短时傅里叶变换
frequencies, times, Z = stft(x, nperseg=100, noverlap=50)
# 绘制语谱图
plt.pcolormesh(times, frequencies, np.abs(Z), shading='auto')
plt.colorbar()
plt.xlabel('Time')
plt.ylabel('Frequency')
plt.title('Spectrogram')
plt.show()
```
以上代码首先生成了一个包含两个正弦波的示例信号。然后使用`stft`函数进行短时傅里叶变换,其中`x`是输入信号,`nperseg`参数定义了每个时间段内的样本数,`noverlap`参数定义了时间段之间的重叠样本数。最后,使用`pcolormesh`函数绘制了语谱图,其中横轴表示时间,纵轴表示频率。
阅读全文