python实现巴特沃斯滤波器
时间: 2023-07-11 10:44:38 浏览: 92
您好,巴特沃斯滤波器是一种常用的数字滤波器,它可以用于滤除信号中高频成分,保留低频成分,从而实现信号的平滑处理。下面是 Python 实现巴特沃斯滤波器的示例代码:
```python
import numpy as np
from scipy.signal import butter, filtfilt
# 设置采样频率和截止频率
fs = 1000 # 采样频率
fc = 100 # 截止频率
# 计算巴特沃斯滤波器的系数
b, a = butter(4, fc / (fs / 2), 'low')
# 生成测试信号,包含低频和高频成分
t = np.arange(0, 1, 1 / fs)
x = np.sin(2 * np.pi * 50 * t) + np.sin(2 * np.pi * 200 * t)
# 应用滤波器进行滤波
y = filtfilt(b, a, x)
# 绘制原始信号和滤波后的信号
import matplotlib.pyplot as plt
plt.figure()
plt.plot(t, x, label='Original signal')
plt.plot(t, y, label='Filtered signal')
plt.xlabel('Time (sec)')
plt.ylabel('Amplitude')
plt.legend()
plt.show()
```
在上面的代码中,我们首先使用 `butter` 函数计算巴特沃斯滤波器的系数,然后使用 `filtfilt` 函数应用滤波器对信号进行滤波。最后,我们使用 Matplotlib 库将原始信号和滤波后的信号绘制在同一张图上,方便对比观察。
阅读全文