使用VS2022WFDB读取ECG信号(Python)

     本人使用的Python编译工具是VS2022,在参考文章ECG心电信号处理:使用WFDB对MIT-BIH数据集进行读取(Python)读取心电信号时,发现总是会报错UnicodeDecodeError: 'utf-8' codec can't decode byte 0xcf in position 21: invalid continuation byte。查看了很多文章,有说是文件里存在汉字的,有说是编码方式不匹配的,但是经过查看atr、dat、hea等文件虽然用记事本打开是呈现出中文乱码的形式,但实际上并不是乱码,而是以212形式存储的,而且rdrecord函数也不支持指定编码方式。经过很长时间的摸索,最终发现代码修改如下即可正常读取。

import wfdb
import matplotlib.pyplot as plt

# 读取本地的100号记录,从0到25000,通道0
record = wfdb.rdrecord('C:/Users/58624/Desktop/mit-bih-arrhythmia-database-1.0.0/100', sampfrom=0, sampto=25000,physical=True, channels=[0, ])
print("record frequency:", str(record.fs))  # 使用逗号代替加号
# 读取前1000数据
ventricular_signal = record.p_signal[0:1000, 0]  # 使用 p_signal 读取物理信号,一读d就出错  如果为True则读取p_signal,如果为False则读取d_signal,默认为False;
print('signal shape:', str(ventricular_signal.shape))  # 使用逗号代替加号
# 绘制波形
plt.plot(ventricular_signal)
plt.title("ventricular signal")
plt.show()

即把“+”号修改为“,”,然后读取物理信号,不要读取数字信号。具体的我也不知道为什么只能读取物理信号,但是这样更改过后是不会报错且能正常运行的,具体什么原因欢迎大家讨论。

你可能感兴趣的:(python,开发语言,visual,studio)