MatlabCode

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

您现在的位置是:MatlabCode > 资源下载 > 一般算法 > 肌电信号带通与陷波联合数字滤波源码

肌电信号带通与陷波联合数字滤波源码

资 源 简 介

本项目专注于生物医学信号处理领域,专门针对表面肌电信号(sEMG)的频谱特性进行去噪处理。由于肌电信号的有效频率范围通常集中在20Hz至500Hz之间,且在采集过程中极易受到50Hz(或60Hz)电力线工频干扰以及低频运动伪影的影响,本系统设计了一个级联的数字滤波方案。具体功能包括:1. 带通滤波器设计:构建一个高阶巴特沃斯(Butterworth)带通滤波器,截止频率设定为约20Hz(去除运动伪影)和500Hz(去除高频噪声),以保留肌电信号的主要能量成分;2. 陷波滤波器设计:设计一个高Q值的IIR陷波滤波器(Notch Filter),专门用于精准剔除50Hz或60Hz的工频干扰,同时尽量减少对邻近频率成分的衰减;3. 零相移处理:利用MATLAB的filtfilt函数实现双向滤波,消除滤波器带来的相位失真,保证信号波形的真实性;4. 信号分析与可视化:系统能够导入原始EMG数据,计算并展示滤波前后的时域波形对比以及功率谱密度(PSD)对比,直观验证降噪效果,为后续的EMG特征提取(如RMS、平均功率频率)提供纯净的数据基础。

详 情 说 明

基于MATLAB的表面肌电信号(sEMG)带通与陷波联合滤波系统

项目介绍

本项目是一个专注于生物医学信号处理的MATLAB仿真系统,旨在解决表面肌电信号(sEMG)采集过程中常见的噪声干扰问题。sEMG信号作为一种微弱的生物电信号,极易受到低频运动伪影、高频测量噪声以及电力线工频干扰(50Hz/60Hz)的影响。

本系统通过构建级联数字滤波器方案,结合了高阶Butterworth带通滤波器和高Q值IIR陷波滤波器,能够有效提取20Hz至500Hz的有效肌电能量成分,并精准剔除50Hz工频干扰。系统采用零相移滤波技术,确保了信号波形的相位完整性,并提供了完整的时域与频域(PSD)可视化分析工具。

关键功能特性

  • sEMG信号仿真模拟:内置高保真信号生成器,能够模拟包含基线漂移、工频干扰、高频噪声以及高斯调制肌肉爆发活动的原始EMG数据。
  • 联合滤波策略
* 带通滤波:去除运动伪影(<20Hz)和高频电子噪声(>500Hz)。 * 陷波滤波:针对性去除50Hz电力线干扰。
  • 零相移处理:全流程采用双向滤波技术,消除IIR滤波器带来的非线性相位失真,保持肌电信号的时域特征。
  • 频域功率谱分析:计算并对比滤波前后的功率谱密度(PSD),量化评估去噪效果。
  • 多维度可视化:提供时域波形对比、PSD频谱对比以及滤波器幅频响应特性的直观展示。

系统环境要求

  • MATLAB R2016b 或更高版本
  • Signal Processing Toolbox(信号处理工具箱,用于 butter, iirnotch, filtfilt, pwelch 等核心函数)

使用方法

  1. 将项目代码保存为 main.m
  2. 在MATLAB环境中打开该文件。
  3. 点击运行(Run),系统将自动执行信号生成、滤波器设计、数据处理及图表绘制。
  4. 等待程序生成三个分析窗口,分别观察时域、频域效果及滤波器特性。

技术实现细节

本项目仅包含一个主程序文件 main.m,其内部逻辑严格按照以下流程实现:

1. 参数设置与信号生成

系统首先定义采样频率为 2000Hz,时长5秒。通过内部子函数构建模拟信号,该信号由以下部分叠加而成:
  • 纯净肌电成分:利用高斯白噪声作为载波,乘以由三个不同时间点的高斯函数构成的包络线,模拟肌肉收缩时的电活动爆发。
  • 工频干扰:叠加50Hz正弦波及其150Hz谐波成分。
  • 基线漂移:合成低频(0.5Hz和1.2Hz)正弦波,模拟因电极移动或皮肤接触阻抗变化产生的低频伪影。
  • 高频噪声:叠加宽带高频随机噪声。

2. 高阶数字滤波器设计

系统设计了两个独立的滤波器对象:

  • 带通滤波器 (Bandpass Filter)
* 类型:Butterworth滤波器。 * 阶数:4阶。 * 参数:截止频率设定为 [20Hz, 500Hz]。 * 目的:Butterworth滤波器具有通带平坦的特性,不仅能有效保留肌电信号的主能量区,还能最大程度减少对有效信号幅值的衰减。

  • 陷波滤波器 (Notch Filter)
* 类型:IIR陷波滤波器(使用 iirnotch 函数设计)。 * 参数:中心频率为50Hz,带宽(Bandwidth)设定为2Hz。 * 特性:高Q值设计使得滤波器具有极窄的阻带,仅针对50Hz进行深度衰减,而对48Hz或52Hz等邻近频率的影响微乎其微,从而保护了该频段内的有效肌电信息。

3. 双向零相移滤波(Zero-Phase Filtering)

为避免常规因果滤波器造成的相位滞后或波形畸变,代码中明确使用了 filtfilt 函数进行信号处理。
  • 流程:信号先正向通过滤波器,再反向通过滤波器。
  • 效果:这种双向处理抵消了相位偏移,实现了零相位失真(Zero-phase distortion)。
  • 级联顺序:原始信号首先经过带通滤波器处理,其输出作为输入再次经过陷波滤波器处理,最终获得纯净信号。

4. 功率谱密度(PSD)分析

为了从频域验证降噪效果,代码使用Welch法(pwelch 函数)计算信号的功率谱密度。
  • 参数配置:使用汉明窗(Hamming window),窗口长度512点,重叠256点,NFFT为1024点。
  • 输出:分别计算原始含噪信号和最终滤波信号的PSD,并转换为分贝(dB)刻度以便于对比。

可视化输出说明

程序运行结束后会生成三个具体的图形窗口:

  1. 时域分析: 滤波前后对比
* 包含三个子图,分别展示: 1. 受污染的原始EMG模拟信号。 2. 仅经过20-500Hz带通滤波后的中间信号(可见基线漂移被移除)。 3. 进一步经过50Hz陷波后的最终信号(可见周期性工频干扰被平滑)。 * 所有子图均截取前2秒数据以便观察波形细节。

  1. 频域分析: 功率谱密度(PSD)
* 在同一坐标系下叠加绘制原始信号(灰色)和滤波后信号(红色)的PSD曲线。 * 图中通过辅助线明确标注了20Hz(下限)、500Hz(上限)和50Hz(工频)的关键位置。 * 用户可以清晰地看到50Hz处的尖峰被压低,且20Hz以下和500Hz以上的噪声能量显著下降。

  1. 滤波器幅频响应
* 左图:展示Butterworth带通滤波器的频率响应,验证通带平坦度和阻带衰减速率。 * 右图:展示IIR陷波滤波器的频率响应,验证在50Hz处的深陷特性及窄带宽特性。