使用 PulseSensor 脉搏传感器测量心率之三:脉搏波信号处理(时域)(Python)1

为了分析脉搏传感器测量的心率数据,就需要对原始数据进行回放,从而有助于直观的认识采集的数据,以便进一步的分析和处理,使用Python可以轻而易举的在时域显示波形。
时域显示波形
需要进行如下操作:
A 将保存的心率数据TXT 数据读入一个临时变量中,进行整理,整理后追加到一个数组中RawY_win[ ]
B 对RawY_win[ ]进行操作,实现RawY_win[ ]中的数据移动
C 绘图,实现动态效果

1、Python时域波形显示示例
1,将保存的心率数据TXT 数据读入一个临时变量中,进行整理,整理后追加到一个数组中RawY_win[ ]

with open('Plusedatald0517.txt', 'r') as f:
    while True:
        line = f.readline()     # 逐行读取    

以「S」为前缀的,表示脉搏数据(脉象图的数值化表示),因此,我们需要判断,判断是「S」为前缀的数据后,将line数据转换为整数类型,存入 Sensor3

  if lineS:
         # print(lineS)
         # print(re.findall(r'\d+', line))  #cut off the leading 'S'
          Sensor1 = re.findall(r'\d+', line)    #convert the string to usable muber
          Sensor2 = Sensor1[0]
          Sensor3 = int(Sensor2)    #convert the string to usable int

2,对RawY_win[ ]进行操作,实现RawY_win[ ]中的数据移动
对RawY_win[ ]进行操作先删除第一个数据,然后将读入的Sensor3追加到末尾,就实现了数组的动态变化

        del RawY_Win[0]
        RawY_Win.append(Sensor3)

3, 绘图,实现动态效果

   plt.clf()   
   plt.ylim((0, 1000))
   plt.plot(RawX_Win,RawY_Win,"b--",linewidth=1) 
   plt.draw()
   plt.pause(0.0001)

2、脉搏波波形显示(时域)完整程序

# -*- coding: utf-8 -*-

"""  
@author: viswang@163.com
"""

import re
from matplotlib import pyplot as plt

RawY_Win = [555]*400
RawX_Win = [n for n in range(1, 401)]

with open('Plusedatald0517.txt', 'r') as f:
    while True:
        line = f.readline()     # 逐行读取

        lineS=line.startswith('S', 2,3)  #leading 'S' for sensor data
        # lineB=line.startswith('B', 2,3)  #leading 'B' for BPM data
        #  lineQ=line.startswith('Q', 2,3)  #leading 'Q' means IBI data 
        if lineS:
         # print(lineS)
         # print(re.findall(r'\d+', line))  #cut off the leading 'S'
          Sensor1 = re.findall(r'\d+', line)    #convert the string to usable muber
          Sensor2 = Sensor1[0]
          Sensor3 = int(Sensor2)    #convert the string to usable int
          #Sensor3 = (1023 - int(Sensor2)) - 212
          del RawY_Win[0]

          RawY_Win.append(Sensor3)

          plt.clf()

          plt.ylim((0, 1000))
          plt.plot(RawX_Win,RawY_Win,"b--",linewidth=1) 

          plt.draw()
          plt.pause(0.0001)

        if not line:
           break

plt.xlabel("Time(s)") #X轴标签  
plt.ylabel("Pluse")  #Y轴标签  
plt.title("Pluse") #图标题
plt.show()    #显示图  

写在最后的话,对原始数据进行回放,对采集的数据有直观的认识后,才能进一步的分析和处理,其中涉及到多方面的知识及反复迭代。
《难经.六十一难》将四诊概括为:望而知之谓之神、闻而知之谓之圣、问而知之谓之工、切而知之谓之巧,通过脉搏传感器测量心率,就是要实现“巧”为目标。
作为Python以及中医初学者,隐隐的有这种感觉,可以通过《难经.六十一难》为入手点,应用编程手段进行辅助诊断,可以进行如下结合
望而知之–图像分析
闻而知之–语音分析
问而知之–语音互动
切而知之–脉搏分析
有兴趣的朋友,可以邮件沟通:viswang@163.com

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值