修改过后的代码去除基线漂移效果也不好,请继续修改代码
时间: 2024-03-18 22:39:53 浏览: 67
好的,如果基线漂移去除效果不好,可以尝试使用其他方法。以下是一种常用的方法:
```python
import wfdb
import numpy as np
import matplotlib.pyplot as plt
from scipy.signal import butter, filtfilt
# 读取数据
record = wfdb.rdrecord('D:/下载/ptb-xl-a-large-publicly-available-electrocardiography-dataset-1.0.3/records100/00000/00001_lr')
data = record.p_signal[:,0]
# 去除基线漂移
fs = record.fs # 采样频率
nyq = 0.5 * fs # 奈奎斯特频率
lowcut = 0.5 # 截止频率
order = 4 # 滤波器阶数
b, a = butter(order, lowcut / nyq, btype='highpass') # 高通滤波器
baseline = filtfilt(b, a, data) # 过滤后的信号即为基线
data = data - baseline
# 绘制原始信号图像
plt.figure(figsize=(10, 6))
plt.plot(data)
plt.title('Raw Signal')
plt.xlabel('Sample')
plt.ylabel('Amplitude')
plt.show()
# 绘制去除基线漂移且滤波后的图像
b, a = butter(order, [0.05 / nyq, 15 / nyq], btype='bandpass') # 带通滤波器
filtered_data = filtfilt(b, a, data)
plt.figure(figsize=(10, 6))
plt.plot(filtered_data)
plt.title('Filtered Signal')
plt.xlabel('Sample')
plt.ylabel('Amplitude')
plt.show()
```
修改后的代码中,使用了一个高通滤波器去除基线漂移,然后使用一个带通滤波器进行滤波。这两个滤波器的参数需要根据数据的特点进行调整。
阅读全文