python 实现巴特沃斯滤波器
时间: 2023-07-07 11:39:54 浏览: 108
巴特沃斯滤波器是一种常见的模拟滤波器,用于滤除特定频率范围内的信号。在 Python 中,可以使用 scipy 库中的 butter 函数实现巴特沃斯滤波器。
下面是一个例子,演示如何使用 Python 实现巴特沃斯滤波器:
```python
import numpy as np
from scipy.signal import butter, filtfilt
import matplotlib.pyplot as plt
import seaborn as sns
# 生成示例信号
t = np.linspace(0, 10, 1000)
x = np.sin(2 * np.pi * 2 * t) + np.sin(2 * np.pi * 9 * t)
# 设计巴特沃斯低通滤波器
fs = 100 # 采样率
cutoff = 5 # 截止频率
order = 4 # 阶数
nyq = 0.5 * fs
Wn = cutoff / nyq
b, a = butter(order, Wn, btype='low')
# 应用滤波器
y = filtfilt(b, a, x)
# 可视化结果
sns.set()
fig, ax = plt.subplots(nrows=2, sharex=True, figsize=(8, 6))
ax[0].plot(t, x)
ax[0].set(title='原始信号')
ax[1].plot(t, y)
ax[1].set(title='滤波后的信号', xlabel='时间 (秒)')
plt.show()
```
这段代码会生成一个包含原始信号和滤波后信号的图表。在巴特沃斯滤波器中,需要指定截止频率、阶数和滤波器类型(例如低通滤波器、高通滤波器等)。在这个例子中,我们使用 butter 函数生成一个 4 阶低通滤波器,截止频率为 5 Hz,对示例信号进行滤波。最终得到的滤波后的信号可以看作是原始信号的平滑版本,去除了高频噪声。
阅读全文