用Python实现查心率

一、
期末Python老师要求做一个项目,内容是在Pycharm中通过matplotlib模块测心率。
二、
data.txt中的数据为某人的光电容积脉搏波(PPG)信号的采样值,请按照以下要求进行分析:

  1. 数据分析的起始位置为:
    取学号最后两位减一后乘以100(比如最后两位为26,则从(26-1)100开始)作为初始处理点,记为k,向后分析300行(即300个数据点)。
    提示:我给同学们的数据每一行有6个字符(5个数字加一个换行符),可以使用seek(k*6)快速定位。
  2. 绘制出所分析数据的图形,包括原始波形和进行均值滤波之后的波形,作为两个子图放在同一幅图中;在进行均值滤波之后的波形图中找出所分析数据段内全部PPG信号的完整周期,即在波峰或波谷处用明显的标识标出。
  3. 已知数据采集速率为40采样点/秒,请求出你所分析的300个数据点内所有完整心跳周期的平均心率,单位为次/分,精确到小数点后1位。
    提示:若求出某个周期内的数据点数为n,则该周期对应的心率为:40 * 60 / n(次/分)
  4. 最终提交内容为:
    1) 要求2所生成的图片,图片名称为你所求出的平均心率,例如:平均心率为72.6bpm;
    图片效果为(标出波峰或波谷其中之一即可):
    2) 完整代码的py文档,命名为学号+姓名。
    在这里插入图片描述

三、下面是详细代码:

import numpy as np
import matplotlib.pyplot as plt

SN = '19560640837'  # 学号
Name = '阿豪'  # 姓名
raw_list = []  # 存放原始数据列表
dpi = 200  # 图片分辨率
start_pos = ((int(SN[-2:]) - 1) * 100) * 6
data_limit = 300  # 分析数据量
filter_window = 8  # 滤波窗口大小
myfilter = []  # 自建均值滤波器
smooth_list = []  # 存放滤波后数据列表
print(start_pos)
with open('F:\学习\Python/data.txt', 'r') as f1:
    tail = f1.seek(0, 2)
    f1.seek(start_pos)
    while f1.tell() < tail:
        raw_data = int(f1.readline())
        if len(raw_list) == data_limit:
            break
        else:
            if len(myfilter) < filter_window:
                myfilter.append(raw_data)
            else:
                smooth_data = np.mean(myfilter)
                myfilter.pop(0)
                myfilter.append(raw_data)
                raw_list.append(raw_data)
                smooth_list.append(smooth_data)
slip_max = []
slip_min = []
size = 9
x1 = []
x2 = []
for i in range(0, len(smooth_list) - size + 1):
    if smooth_list[i + 4] == max(smooth_list[i:i + size]):
        slip_max.append(max(smooth_list[i:i + size]))
        x1.append(i)
    if smooth_list[i + 4] == min(smooth_list[i:i + size]):
        slip_min.append(min(smooth_list[i:i + size]))
        x2.append(i)
t = []
for i in range(0, len(x1)-1):
    t.append(x1[i+1]-x1[i])
#平均心率 40 * 60 / n(次 / 分)
average = (40/np.mean(t))*60
print(average)
print(smooth_list)
print(raw_list)
x = range(len(raw_list))
plt.figure(dpi=dpi)
plt.subplot(211)
plt.plot(x, raw_list)
plt.xlabel('x-采样点', fontproperties='SimHei')
plt.ylabel('y-幅值', fontproperties='SimHei')
plt.title('原始波形', fontproperties='STLITI', fontsize=24)
plt.subplot(212)
plt.plot(x, smooth_list)
plt.xlabel('x-采样点', fontproperties='SimHei')
plt.ylabel('y-幅值', fontproperties='SimHei')
plt.title('均值滤波波形', fontproperties='STLITI', fontsize=24)
plt.scatter(x1, slip_max, marker='*', color='c')
plt.scatter(x2, slip_min, marker='.', color='r')
plt.show()

四、最后运行代码,显示心率波峰图

在这里插入图片描述
下面给大家分享百度网盘和阿里云盘的链接,供大家免费下载使用。
百度网盘-测心率
阿里云盘-测心率
(百度网盘提取码hqjd)

  • 21
    点赞
  • 101
    收藏
    觉得还不错? 一键收藏
  • 12
    评论
### 回答1: Python基于PPG信号心率分析系统是一种利用Python编程语言开发的系统,它可以通过PPG信号分析人的心率PPG信号是一种反映心脏活动的生理信号,通过对PPG信号的采集和处理,可以得到人的心率信息。该系统可以实时采集PPG信号,并对其进行滤波、峰值检测等处理,最终得到人的心率。该系统可以应用于医疗、健康管理等领域。 ### 回答2: 随着现代人生活节奏的加快,心脏病等心脑血管疾病已经成为我国社会公共卫生问题之一。心率变异性(HRV)是指心率在不同时间间隔下的变化。它是自主神经系统调节心率的一种反映,既是生理学也是医学上重要的指标之一。近年来,随着生物医学工程领域的不断发展,基于PPG(photoplethysmography)信号心率分析系统逐渐得到了广泛应用。本文将讨论Python语言在基于PPG信号心率分析系统方面的实践和应用。 PPG信号通常是通过光电测量技术采集的。光电传感器将光转换为电信号并转化为由动脉搏动引起的变化波形。这种波形包含的信息可以用来获得心率、心律不齐和血压等鲜明的生理特征。 为了实现基于PPG信号心率分析系统Python语言可以通过使用相关的Python库和软件来协助开发人员处理这些数据,例如Numpy、Scipy、Matplotlib、Pandas和Scikit-Learn等。Numpy可以用来处理和处理数值数据,Scipy可以用来计算信号特征和基本信号处理,Matplotlib用于绘制图像,Pandas用于数据集更易读性,而Scikit-Learn用于构建机器学习模型。 基于PPG信号心率分析系统的设计和开发需要遵循以下几个步骤: 1. 数据收集:通过光电测量技术,并通过Python获取收集数据。收集到的数据可能包括心率、血氧饱和度和呼吸率等指标。 2. 数据预处理:将收集的数据进行预处理,例如去除噪声、滤波和信号矫正等。使用Numpy和Scipy等Python库可以方便的实现这些功能。 3. 特征提取:提取PPG信号心率变异性特征,例如时间域、频域和非线性动力学特征。 4. 视觉化:使用Matplotlib库对收集的数据进行可视化分析,例如绘制波形图、心率曲线和统计分析图表等。 5. 机器学习:将预处理后的数据输入到机器学习模型中,进行模型训练和预测,包括分类、聚类和回归等有监督和无监督算法模型。 6. 应用:将模型应用于实际场景,例如健康管理、老年人照护、体育训练和心理学研究等。 总之,Python语言在基于PPG信号心率分析系统方面有很大的潜力和应用价值。开发人员可以使用相关的Python库和软件来简化和加速开发过程,并可以将心率分析模型应用于更广泛的生物医学和健康管理领域。 ### 回答3: Python是一种高级编程语言,非常适合用于开发心率分析系统。这些系统利用ppg信号来测量心率,它是一种无创的技术,可以通过脉搏波来测量心率。这种技术的优点在于无需通过穿刺、贴电极等方式对人体进行治疗,因此安全性和便利性都非常高。 Python语言在这方面的应用非常广泛,并且是一个可靠的工具,可以帮助程序员开发出高质量的心率分析系统。使用Python进行心率分析,程序员可以很容易地将ppg信号传输到计算机上,并利用Python提供的数据处理工具和算法来分析这些数据。 通过分析ppg信号心率分析系统可以实时监测心率心率变异性,这对于诊断和治疗许多心血管疾病非常有用。一些基于Python的工具和库,例如Numpy和Scipy,可以帮助程序员对信号进行快速处理,并通过不同的算法和模型来确定心率变异性及其重要指标。此外,Matplotlib等数据可视化库可以将分析结果以图形方式表示,使医生和病人能够更好地理解数据并做出相应的决策。 总之,Python基于ppg信号心率分析系统是一种非常有用和现代化的技术,它不仅可以为医生和病人提供可靠的测量结果,还可以提高诊断效率,减少错误率,帮助人们更好地管理和预防心血管疾病。
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值