低通滤波代码实现 Python
时间: 2023-08-14 18:36:23 浏览: 293
以下是一个使用 Python 实现的低通滤波器示例代码:
``` python
import numpy as np
from scipy.signal import butter, lfilter
# 生成示例信号
fs = 100.0 # 采样率
t = np.linspace(0, 1, int(fs) + 1)
signal = np.sin(2 * np.pi * 5 * t) + np.sin(2 * np.pi * 10 * t) + np.sin(2 * np.pi * 20 * t)
# 设计低通滤波器
cutoff_freq = 15.0 # 截止频率
order = 4 # 滤波器阶数
nyquist_freq = 0.5 * fs
normalized_cutoff_freq = cutoff_freq / nyquist_freq
b, a = butter(order, normalized_cutoff_freq, btype='low')
# 应用滤波器
filtered_signal = lfilter(b, a, signal)
# 绘制滤波前后的信号
import matplotlib.pyplot as plt
plt.figure()
plt.plot(t, signal, 'b-', label='signal')
plt.plot(t, filtered_signal, 'g-', linewidth=2, label='filtered signal')
plt.xlabel('Time [sec]')
plt.ylabel('Amplitude')
plt.legend()
plt.grid(True)
plt.show()
```
在这个示例代码中,我们首先生成了一个包含三个正弦波的示例信号,然后使用 `butter()` 函数设计了一个 15Hz 的低通滤波器,最后使用 `lfilter()` 函数应用了这个滤波器,得到了滤波后的信号。最后,我们使用 `matplotlib` 库绘制了滤波前后的信号,以便比较滤波效果。
阅读全文