心跳信息的提取分析:
首先,ECG_signal.mat文件包含两组信息ECG_1和Time_Adjusted。其中ECG_1中存储的信息为心跳的数值,可以观察到大部分数值为负数。而波峰均为整数,可以通过计算两个相邻波峰之间的实际来得到周期,从而计算出心跳的次数。
具体实现过程:
使用Pyhton第三方库scipy中的loadmat来加载mat文件,格式为字典,因为此文件包含两个量,所以就有两个键。以正负变化的点作为分割点对ECG_1进行划分,把正负改变点放在list中。计算list中每两个相邻索引之间最大值的下标,这些小标就是心跳图形波峰的下标。利用这些下标在Time_Adjusted中得到波峰的采样时间点,两个波峰之间的时间差就是一个周期的实际,把计算出的每个周期时间相加再除以个数,就获得了平均周期时间。所以一分钟心跳次数=60/周期
Python代码
# -*- coding: UTF-8 –*-
import scipy.io as sio
import matplotlib.pyplot as plt
data = sio.loadmat('ECG_signal.mat') # 加载mat文件
mylist=[] # 存储正负改变点的索引
ecg=data['ECG_1'] # ecg为numpy.ndarray型
for i in range(0,len(ecg)-1,1):
if (ecg[i]<0 and ecg[i+1]>=0) or (ecg[i]>=0 and ecg[i+1]<0):
mylist.append(i)
maxindex=[]