MatlabCode

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

您现在的位置是:MatlabCode > 资源下载 > 一般算法 > 基于香浓能量的心音信号包络提取系统

基于香浓能量的心音信号包络提取系统

资 源 简 介

该项目致力于实现心音信号(PCG)的精准特征提取与包络生成。其核心任务是利用香浓能量(Shannon Energy)算法,将原始心音信号中复杂的高频振荡转化为反映心脏搏动能量分布的高平滑包络曲线。实现流程包括先对输入信号进行重采样与中值滤波预处理,随后通过滑动窗口技术计算信号每一时刻的香浓熵值。与传统的Hilbert变换或绝对值检波方法相比,香浓能量算法能更好地突出S1和S2心音分量的起始点与终止点,同时对信号中的微弱震颤和突发噪声具有更强的抑制能力。生成的包络线可用于自动化检测心动周期、计算心率以及分析

详 情 说 明

基于香浓能量的心音信号包络提取系统

项目介绍

本项目是一款专门用于心音信号(PCG)分析的数字化处理系统。其核心目标是从包含噪声和高频振荡的原始心音数据中,提取出形态平滑、能够准确反映心脏搏动特征的能量包络线。通过应用香浓能量(Shannon Energy)算法,系统能够显著增强心音中的第一心音(S1)和第二心音(S2)分量,并有效抑制无关的背景噪声与微弱杂音。该系统生成的包络曲线为后续的心动周期识别、心率计算及病理分析提供了高质量的基础数据,适用于远程医疗监测、智能穿戴设备算法开发以及临床辅助诊断。

---

功能特性

  1. 模拟信号构建:内置心音合成功能,能够精确模拟包含S1和S2典型特征的心音信号,并支持叠加高斯白噪声以验证算法的鲁棒性。
  2. 多级预处理模块:系统集成了重采样、中值滤波和带通滤波(25Hz-400Hz)功能,针对心音频率特性进行深度优化,去除工频干扰和基线漂移。
  3. 非线性能量变换:采用香浓能量算法进行信号转换。相比传统算力,该算法能非线性地放大信号包络,使得心音成分的边界更加清晰。
  4. 动态滑动窗口平滑:通过自定义的时间窗口对能量分布进行均值处理,确保能量曲线的实时性和稳定性。
  5. 二次平滑策略:利用移动平均技术执行二次加工,消除残余的细微抖动,生成连续性良好的最终包络。
  6. 自动化特征定位:基于阈值与最小峰值距离约束,自动检测包络中的心音峰值点(S1/S2),并估算实时心率(BPM)。
  7. 多维度可视化分析:通过三段式图表直观展示预处理对比、能量计算过程以及最终的心音成分定位结果。

---

使用方法

  1. 环境准备:启动MATLAB环境,确保已安装信号处理工具箱(Signal Processing Toolbox)。
  2. 信号载入:直接运行主脚本。系统默认会通过辅助函数生成一组5秒长的模拟心音信号。若需处理实际临床数据,可将“模拟生成”部分代码替换为相应的音频读取函数。
  3. 参数调整:根据实际信号的采样率,可微调代码中的重采样频率(fs_new)或滤波器的截止频率(25Hz-400Hz)。
  4. 运行监控:在命令行窗口(Command Window)观察自动检测到的峰值个数与平均心率。
  5. 结果查看:通过弹出图表观察原始信号、滤波信号、瞬时能量与最终归一化包络的对应关系。

---

系统要求

  • 软件环境:MATLAB R2018b 或更高版本。
  • 必需包:Signal Processing Toolbox(用于调用filtfilt, butter, findpeaks, medfilt1等核心函数)。
  • 硬件建议:标准PC环境即可,算法已针对大样本批处理进行优化,内存占用极低。
---

实现逻辑与代码功能分析

1. 信号生成与预处理逻辑

代码首先建立采样率为2000Hz的信号环境。预处理环节包含三个核心步骤:
  • 重采样:将信号降频至1000Hz,在保证心音信息完整的前提下提高计算效率。
  • 中值滤波:应用长度为10点的中值滤波器,有效剔除信号中可能存在的突发性尖峰脉冲噪声。
  • 带通滤波:使用4阶巴特沃斯(Butterworth)滤波器,保留25Hz至400Hz的有效频率区间,这是心音主要能量集中的频段,能有效过滤呼吸音和环境低频干扰。

2. 香浓能量算法核心实现

算法通过公式 E = -x^2 * log(x^2) 进行能量转换。逻辑详情如下:
  • 归一化处理:首先将滤波后的信号映射到 [-1, 1] 区间,这是计算香浓能量的前提。
  • 瞬时能量计算:利用平方项突出振幅,结合对数项改善信号的对比度。为了防止零点导致的计算异常,代码中加入了名为 epsilon (1e-10) 的极小偏移量。
  • 加权过程:香浓能量能使高幅值部分更加突出,同时将中低强度的噪声能量进一步压缩,使S1与S2的形态在时域上呈明显的驼峰状。

3. 滑动窗口与平滑策略

为了从高频波动的瞬时能量中提取平滑曲线,系统执行了两步操作:
  • 窗口均值化:设置20ms的动态滑动窗口对瞬时香浓能量进行第一次集成。
  • 多次平滑:利用 movmean 函数进行50ms窗口的移动平均处理,这一步骤极大增强了包络的连续性,确保了在复杂的信号环境下不会出现多余的小碎峰。

4. 特征提取与心率评估

  • 峰值检测:系统在归一化后的包络线上通过 findpeaks 函数搜寻局部极大值。
  • 约束条件:设置了0.15倍窗口最大值的阈值限定,并利用0.2秒的最小峰值间距限制,防止将同一个S1或S2成分误检为多个目标。
  • 心率转换:通过检测到的峰值位置差(diff)计算平均周期,进而推算出模拟心率。
---

关键算法细节分析:香浓能量的优势

在本项目实现中,香浓能量算法相较于传统的希尔伯特变换(Hilbert Transform)具有更好的自适应性。代码通过对 $x^2$ 的非线性变换,有效地平衡了信号的强弱分布。在心音信号中,即便 S2 的幅度远小于 S1,香浓能量算法也能通过对数运算的特性将其包络清晰地提取出来,而不会被 S1 所遮掩。此外,该算法对含有微弱震颤的病理性心音具有天然的集成平滑作用,是生理信号包络提取领域的高效选择。