python绘制频谱图 使用scipy
时间: 2023-07-20 15:36:17 浏览: 184
要使用Python绘制频谱图,可以使用Scipy库中的signal模块和matplotlib库。
首先,需要在Python中导入相关的库:
```python
import numpy as np
import matplotlib.pyplot as plt
from scipy import signal
```
接下来,可以使用Scipy的signal模块中的stft函数来计算信号的短时傅里叶变换(STFT)。这个函数需要输入信号、采样率和窗口长度等参数。例如:
```python
# 读取音频文件并计算STFT
fs, data = wavfile.read('audio.wav')
f, t, Zxx = signal.stft(data, fs, nperseg=512)
```
这里假设需要绘制的频谱图的信号已经存储在名为“audio.wav”的音频文件中。nperseg参数指定窗口长度,可以根据需要进行调整。
计算出STFT之后,可以使用matplotlib库中的pcolormesh函数将STFT数据绘制成频谱图。例如:
```python
# 绘制频谱图
plt.pcolormesh(t, f, np.abs(Zxx), vmin=0, vmax=np.max(np.abs(Zxx)))
plt.title('STFT Magnitude')
plt.ylabel('Frequency [Hz]')
plt.xlabel('Time [sec]')
plt.show()
```
这里使用了pcolormesh函数来绘制频谱图,其中t是时间轴,f是频率轴,np.abs(Zxx)是STFT数据的绝对值。vmin和vmax参数可以调整颜色映射的范围。
完成这些步骤后,就可以得到一个简单的频谱图了。
阅读全文