Python中的WFDB库使用
读取的库的内容主要是MITDB和NSTDB(噪音压力测试库),均是在线读取数据
Physionet ATM:https://physionet.org/cgi-bin/atm/ATM
Demo1–使用’rdsamp’函数读取数据并画图
import wfdb
import matplotlib.pyplot as plt
signal, fields=wfdb.rdsamp('100',channels=[0, 1], sampfrom=0, sampto=1500, pb_dir='mitdb/')
#mitdb数据库的是数据是两导联,格式是[650000,2]的数据,channels是选择读取哪一个导联的
print('signal:',signal)
print('fields:',fields)
plt.plot(signal)
plt.ylabel(fields['units'][0])
plt.legend([fields['sig_name'][0],fields['sig_name'][1]])
plt.show()
输出:
signal: [[-0.145 -0.065]
[-0.145 -0.065]
[-0.145 -0.065]
...,
[-0.355 -0.27 ]
[-0.38 -0.285]
[-0.39 -0.29 ]]
fields: {
'fs': 360, 'sig_len': 1500, 'n_sig': 2, 'base_date': None, 'base_time': None, 'units': ['mV', 'mV'], 'sig_name': ['MLII', 'V5'], 'comments': ['69 M 1085 1629 x1', 'Aldomet, Inderal']}
Demo2–读取ECG信号和标记并画图
import wfdb
record=wfdb.rdrecord('100', sampto=3600, pb_dir='mitdb/')
annotation=wfdb.rdann('100', 'atr',sampto=3600, pb_dir='mitdb/')
wfdb.plot_wfdb(record=record, annotation=annotation,
title='Record 100 from MIT-BIH Arrhythmia Database', time_units='seconds')
print('annotation:',annotation.__dict__)
print('record:',record.__dict__)
print('signal:',record.p_signal)#这个record其实并不是字典需要用点操作符取出值
输出:
annotation {
'record_name': '100', 'extension': 'atr', 'sample': array([ 18, 77, 370, 662, 946, 1231, 1515, 1809, 2044, 2402, 2706,
2998, 3282, 3560]), 'symbol': ['+', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'A', 'N', 'N', 'N', 'N', 'N'], 'subtype': array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), 'chan': array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), 'num': array([0,