Python中如何实现低通滤波?
时间: 2024-05-13 13:11:11 浏览: 122
OpenCV的傅里叶变换 低通滤波器.txt
在Python中实现低通滤波,可以使用SciPy库中的signal模块。具体步骤如下:
1.导入必要的库
```python
import numpy as np
from scipy import signal
import matplotlib.pyplot as plt
```
2.生成信号
这里以正弦信号为例:
```python
t = np.linspace(0, 1, 1000, False) # 生成时间序列
sig = np.sin(2 * np.pi * 5 * t) + np.sin(2 * np.pi * 10 * t) # 生成包含5Hz和10Hz的正弦信号
```
3.设计滤波器
使用signal.butter函数设计一个二阶巴特沃斯滤波器,截止频率为8Hz:
```python
order = 2
fs = 1000.0 # 采样频率为1000Hz
cutoff_freq = 8.0 # 截止频率为8Hz
nyquist_freq = fs / 2.0
normal_cutoff = cutoff_freq / nyquist_freq
b, a = signal.butter(order, normal_cutoff, btype='low', analog=False)
```
4.应用滤波器
使用signal.filtfilt函数对信号进行滤波:
```python
filtered_sig = signal.filtfilt(b, a, sig)
```
5.绘制结果
```python
plt.plot(t, sig, 'b', alpha=0.75)
plt.plot(t, filtered_sig, 'r', alpha=0.75)
plt.legend(('Original Signal', 'Filtered Signal'), loc='best')
plt.show()
```
阅读全文