在上述代码的基础上,用fft检测工频干扰,并画图,采样率为2000,频率范围为0-100HZ
时间: 2024-02-21 10:01:52 浏览: 84
基于fft的频谱分析程序
4星 · 用户满意度95%
好的,理解了您的需求。在这里,我会在原有代码的基础上添加新的功能,用FFT检测工频干扰并绘制出FFT图像。下面是修改后的代码:
```python
import numpy as np
import matplotlib.pyplot as plt
# 生成信号数据
t = np.linspace(0, 1, 2000, endpoint=False)
x = np.sin(2*np.pi*50*t) + np.sin(2*np.pi*120*t)
# 添加高斯白噪声
x += 2.5*np.random.randn(len(t))
# FFT变换
N = len(x)
T = 1/2000
yf = np.fft.fft(x)
xf = np.linspace(0.0, 1.0/(2.0*T), N//2)
# 绘制FFT图像
fig, ax = plt.subplots()
ax.plot(xf, 2.0/N * np.abs(yf[:N//2]))
plt.xlim(0, 100)
plt.xlabel('Frequency (Hz)')
plt.ylabel('Amplitude')
plt.title('FFT')
plt.show()
# 检测工频干扰
freq = 50 # 工频干扰频率
index = int(freq*2000) # 工频干扰在FFT中的下标位置
print('工频干扰幅值:', 2.0/N * np.abs(yf[index]))
```
在这段代码中,我们首先生成了一个包含工频干扰的信号数据,并使用FFT变换得到信号的频域信息。接着,我们绘制了FFT图像,并通过xlim函数将频率范围限制在0到100Hz之间。最后,我们检测了工频干扰的幅值,并输出了结果。
您可以将这段代码复制到Python环境中运行,就可以得到FFT图像和工频干扰的幅值了。
阅读全文