使用Python 对任意波形实现生成FFT
时间: 2024-05-14 14:16:08 浏览: 93
fft_python_正弦条形图_
要使用Python生成FFT,需要先安装NumPy库和Matplotlib库。NumPy库提供了FFT算法的支持,Matplotlib库则可用于绘制波形和频谱图。
下面是一个简单的代码示例,演示如何使用Python生成FFT:
```python
import numpy as np
import matplotlib.pyplot as plt
# 生成一个正弦波信号
fs = 2000 # 采样频率
t = np.arange(0, 1, 1/fs) # 时间序列
f1 = 50 # 正弦波频率
f2 = 100 # 正弦波频率
x = np.sin(2*np.pi*f1*t) + np.sin(2*np.pi*f2*t)
# 绘制波形图
plt.subplot(2, 1, 1)
plt.plot(t, x)
plt.title('Time domain')
# 进行FFT变换并绘制频谱图
n = len(x)
y = np.fft.fft(x)
f = np.fft.fftfreq(n, 1/fs)
plt.subplot(2, 1, 2)
plt.plot(f, np.abs(y))
plt.title('Frequency domain')
plt.xlabel('Frequency (Hz)')
plt.show()
```
在上述代码中,我们首先生成了一个包含两个正弦波的信号,然后使用Matplotlib绘制了该信号的时域波形图和频域频谱图。在进行FFT变换之前,我们需要先计算信号的长度$n$,然后使用NumPy的fft函数进行FFT变换。最后,我们使用NumPy的fftfreq函数计算频率轴上的采样点,并将变换后的频域信号的幅度绘制在频谱图上。
注意,生成的频谱图是双边频谱,即正负频率都包含在内。如果想要绘制单边频谱图,需要将频域信号的前一半(除直流分量外)乘以2。
阅读全文