使用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()

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

  • 17
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值