python绘制频谱图 使用scipy.fft
时间: 2023-09-12 16:05:20 浏览: 255
要使用Python绘制频谱图,也可以使用Scipy库中的fft模块和matplotlib库。
首先,需要在Python中导入相关的库:
```python
import numpy as np
import matplotlib.pyplot as plt
from scipy.fft import fft, fftfreq
```
接下来,可以使用Scipy的fft模块中的fft函数来计算信号的傅里叶变换(FFT)。这个函数需要输入信号和采样率等参数。例如:
```python
# 读取音频文件并计算FFT
fs, data = wavfile.read('audio.wav')
n = len(data)
yf = fft(data)
xf = fftfreq(n, 1/fs)[:n//2]
```
这里假设需要绘制的频谱图的信号已经存储在名为“audio.wav”的音频文件中。fft函数将数据转换为频域。fftfreq函数用于计算频率轴上的值,n表示数据的长度,1/fs表示采样周期,[:n//2]表示只取前一半的值,因为FFT的输出是对称的。
计算出FFT之后,可以使用matplotlib库中的plot函数将FFT数据绘制成频谱图。例如:
```python
# 绘制频谱图
plt.plot(xf, 2.0/n * np.abs(yf[:n//2]))
plt.title('FFT Magnitude')
plt.ylabel('Amplitude')
plt.xlabel('Frequency [Hz]')
plt.show()
```
这里使用了plot函数来绘制频谱图,其中xf是频率轴,np.abs(yf[:n//2])是FFT数据的绝对值,乘以2/n是为了进行归一化。可以调整ylabel和xlabel来显示坐标轴的标签。
完成这些步骤后,就可以得到一个简单的频谱图了。
阅读全文