请在代码中加入最后绘图部分,并发给我完整代码
时间: 2024-03-18 16:40:13 浏览: 61
好的,这里是加入了绘图部分的完整代码。这段代码会对PTB心电信号进行滤波和去噪处理,并将处理后的数据绘制成图像,方便直观查看。
```python
import numpy as np
import wfdb
import os
from scipy import signal
import matplotlib.pyplot as plt
# 设置数据集路径
data_path = 'D:/下载/ptb-xl-a-large-publicly-available-electrocardiography-dataset-1.0.3'
# 定义滤波器
def butter_bandpass(lowcut, highcut, fs, order=5):
nyq = 0.5 * fs
low = lowcut / nyq
high = highcut / nyq
b, a = signal.butter(order, [low, high], btype='band')
return b, a
# 定义去噪函数
def remove_noise(data, fs):
b, a = butter_bandpass(0.05, 150, fs, order=5)
filtered = signal.filtfilt(b, a, data)
return filtered
# 遍历所有数据文件
for subdir, dirs, files in os.walk(data_path):
for file in files:
if file.endswith('.mat'):
# 读取数据
record = wfdb.rdrecord(os.path.join(subdir, file))
data = record.p_signal[:, 0]
fs = record.fs
# 数据预处理
filtered_data = remove_noise(data, fs)
# 绘制图像
t = np.arange(0, len(filtered_data) / fs, 1 / fs)
fig, ax = plt.subplots()
ax.plot(t, filtered_data)
ax.set(xlabel='Time (s)', ylabel='Amplitude (mV)', title=file)
ax.grid()
plt.show()
# 保存处理后的数据
wfdb.rdwrite(os.path.join(subdir, file), fs, filtered_data, record.signame, record.units)
print(file + '处理完成')
```
这段代码会对PTB心电信号进行滤波和去噪处理,并将处理后的数据绘制成图像,方便直观查看。在处理完成后,程序会输出文件名,表明该文件已经处理完成。
阅读全文