python 高通滤波
时间: 2023-10-13 15:24:27 浏览: 104
高通滤波是一种数字信号处理方法,用于去除信号中的低频分量,保留高频分量。在Python中,可以使用SciPy库中的高通滤波函数实现高通滤波。
下面是一个简单的高通滤波的示例代码:
```python
import numpy as np
from scipy import signal
# 生成一个包含低频和高频信号的模拟信号
fs = 1000 # 采样率
t = np.linspace(0, 1, fs, endpoint=False)
x = np.sin(2 * np.pi * 10 * t) + np.sin(2 * np.pi * 100 * t)
# 设计一个50Hz的高通滤波器
fc = 50 # 截止频率
b, a = signal.butter(4, fc / (fs / 2), 'highpass')
# 对信号进行滤波
y = signal.filtfilt(b, a, x)
# 绘制原始信号和滤波后的信号
import matplotlib.pyplot as plt
fig, (ax1, ax2) = plt.subplots(2, 1, figsize=(8, 6))
ax1.plot(t, x)
ax1.set_title('Original Signal')
ax2.plot(t, y)
ax2.set_title('Filtered Signal')
plt.tight_layout()
plt.show()
```
在上面的代码中,首先生成一个包含低频和高频信号的模拟信号。然后使用`signal.butter`函数设计一个50Hz的高通滤波器,其中`4`表示滤波器的阶数,`fc / (fs / 2)`表示截止频率的归一化值,`'highpass'`表示高通滤波。
最后使用`signal.filtfilt`函数对信号进行滤波,得到滤波后的信号`y`。可以看到,原始信号中的低频分量已经被滤除,只留下了高频分量。
阅读全文