MatlabCode

本站所有资源均为高质量资源,各种姿势下载。

您现在的位置是:MatlabCode > 资源下载 > 一般算法 > MATLAB串口心电信号实时采集与处理GUI系统

MATLAB串口心电信号实时采集与处理GUI系统

资 源 简 介

本程序旨在通过MATLAB图形用户界面实现对外部心电传感器的实时数据获取、处理与可视化分析。系统利用MATLAB内置的串口通讯接口与底层硬件进行握手,能够通过解析特定的数据包格式实时提取心电电压值。程序集成了动态波形绘制引擎,支持在GUI界面上实时滚动显示心电图,并提供多种信号处理功能,如用于消除工频干扰的陷波器、抑制基线漂移的高通滤波器以及去除肌电噪声的低通滤波器。系统还包含核心的R波检测算法,能够根据采集到的实时数据自动计算并显示瞬时心率。此外,程序具备完备的数据管理功能,用户可以在界面上设置串口参数

详 情 说 明

基于MATLAB的串口心电信号实时采集与处理GUI系统

项目介绍

本项目是一个集成化的心电图(ECG)实时监测解决方案。系统通过MATLAB图形用户界面(GUI)与硬件传感器进行串行通讯,实现了从原始数据采集、数字信号处理、波形实时显示到特征自动识别及数据持久化存储的完整闭环过程。该系统适用于医疗科研原型开发、教学演示以及生物医学信号处理的实时验证。

功能特性

  • 实时串行通讯:支持自动检测可用串口,允许自定义波特率,并采用回调机制实现高效的数据流解析。
  • 多级数字滤波:内置工频陷波、高通滤波器和低通滤波器,有效解决心电信号中常见的工频干扰、基线漂移和肌电噪声问题。
  • 动态波形引擎:具备高性能的滚动绘图功能,提供10秒长度的滑动观测窗口,实时展现处理前后的心电特征。
  • 智能心率分析:集成QRS波群检测算法,通过对滤波后信号的差分与动态阈值分析,实时计算并显示瞬时心率(BPM)。
  • 数据管理与导出:支持采集全过程的数据记录,并提供向本地导出为 .mat 或 .csv 格式的功能,便于后续分析。
  • 状态监控:界面实时反馈通讯连接状态、设备运行状态及算法计算结果。

使用方法

  1. 硬件连接:将心电采集硬件连接至计算机串口或通过USB转串口模块接入。
  2. 启动系统:运行程序进入主界面。
  3. 通信配置:在“通信设置”面板中选择正确的串口号(系统自动扫描可用端口)和波特率(默认为115200)。
  4. 建立连接:点击“连接 Serial”按钮。连接成功后,“开始采集”按钮将变为可用状态。
  5. 开启采集:点击“开始采集”,系统开始接收波形并在绘图区域显示。
  6. 参数调节:根据干扰情况,在“信号处理选项”面板中勾选对应的滤波操作(50Hz陷波、0.5Hz高通、40Hz低通)。
  7. 获取心率:系统将自动在后台进行算法匹配,并在“心电分析结果”中显示实时心率。
  8. 保存或清除:采集结束后,点击“导出记录”保存数据,或点击“清除数据”重置缓冲区开始新一轮监测。

系统要求

  • 软件环境:MATLAB R2019b 或更高版本。
  • 工具箱:需要安装 Instrument Control Toolbox(用于串口通信)以及 Signal Processing Toolbox(用于滤波器设计与峰值检测)。
  • 硬件配合:符合特定数据格式(6字节帧格式)的心电采集模块。

功能实现逻辑分析

系统架构基于“主回调循环+定时器刷新”的双线程逻辑设计:

通讯解析逻辑

系统采用 serialport 对象进行异步通讯。数据包解析逻辑设定为每 6 个字节触发一次回调。解析过程中,系统假定数据帧结构为:2字节帧头、2字节包含16位ADC采样值的核心数据、2字节帧尾/校验。程序通过将数据位的高8位与低8位进行位运算(高位乘以256并累加低位)还原为真实的电压量化值。

信号处理流程

信号处理在绘图刷新定时器中触发,采用串行滤波架构:
  1. 工频陷波:利用 iirnotch 设计陷波器,精确滤除 50Hz 环境交流电干扰。
  2. 基线矫正:通过 2 阶巴特沃斯高通滤波器(截止频率 0.5Hz)去除因呼吸或电极接触引起的缓慢基线漂移。
  3. 降噪抑制:通过 2 阶巴特沃斯低通滤波器(截止频率 40Hz)滤除高频的肌电干扰和环境噪声。

R波检测算法

心率算法每 0.5 秒在后台缓冲区进行一次计算。算法核心逻辑包括:
  • 特征增强:对滤波后的信号进行一阶差分并取平方,放大 R 波的斜率特征,同时抑制 P 波与 T 波。
  • 动态寻峰:基于当前缓冲区内信号最大幅值的 0.6 倍设置自适应阈值。
  • 间隔计算:利用 findpeaks 函数定位峰值位置,设置 0.4 秒的最小峰值间距防止双重计数。通过计算相邻 RR 间距的平均值,并结合采样率换算为每分钟心跳次数。

数据管理逻辑

程序维护了两种缓冲区:一种是长度固定的滑动缓冲区(2500个采样点),用于保持绘图区域的实时滚动;另一种是动态增长的全量数据数组,用于记录从采集开始到结束的所有样本,确保导出数据的完整性。导出模块支持带时间戳的结构化存储。