【肌电图信号分析】通道肌电图并查找收缩周期的数量、振幅、最大值和持续时间(Matlab代码实现)

  💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

💥1 概述

通道肌电图信号分析:收缩周期的数量、振幅、最大值和持续时间研究

摘要

1. 引言

2. 肌电图信号采集与预处理

2.1 信号采集

2.2 预处理流程

3. 收缩周期检测算法

3.1 阈值法

3.2 斜率阈值法

3.3 能量法

3.4 机器学习方法

4. 参数提取与计算

4.1 收缩周期数量

4.2 振幅与最大值

4.3 持续时间

4.4 高级参数(可选)

5. 应用场景与案例分析

5.1 临床诊断

5.2 运动科学

5.3 康复工程

6. 挑战与未来方向

6.1 技术挑战

6.2 研究方向

7. 结论

📚2 运行结果

🎉3 参考文献

🌈4 Matlab代码实现


💥1 概述

该算法接受来自一块肌肉的肌电图信号,并根据用户输入的参数找到收缩期的数量、幅度、最大值和持续时间。输出保存为逗号分隔文本 (csv) 和图像(图 png)。该算法首先使用合成肌电图信号进行测试,然后使用在吃中等强硬食物和睡眠期间记录的咬肌肌的真实肌电图信号。
我们的算法是使用短时快速傅里叶变换的替代方法,以检测咀嚼频率。这是在程序中通过计算每个咀嚼周期周期的倒数获得的。

目前广泛用于苏黎世大学(瑞士)牙科医学中心,用于评估健康受试者和磨牙症咬肌的日常和夜间活动。该脚本还用于同一中心的一项试点研究,以调查佩戴夜间咬合器具对咬肌活动的影响。

要分析肌电图信号并查找收缩周期的数量、振幅、最大值和持续时间,按照以下步骤进行:

1. 采集肌电图信号:使用合适的电极将肌肉的电活动信号采集下来。确保信号采集设备与肌肉相连,并设置适当的采样率和增益。

2. 数据预处理:对采集到的肌电图信号进行预处理。这包括滤波、降噪和放大,以提高信号质量和可分析性。

3. 分析收缩周期数量:通过观察信号波形的周期性特征,可以估计收缩周期的数量。可以使用自相关函数或傅里叶变换等方法来检测信号的周期性。

4. 计算振幅和最大值:通过测量信号的幅值,可以计算振幅和最大值。振幅是信号波形的振幅大小,而最大值是信号中的最大幅值。

5. 计算持续时间:基于收缩周期的识别,可以计算每个收缩周期的持续时间。持续时间是指从一个收缩周期开始到下一个收缩周期开始的时间间隔。

通过上述步骤,你可以对肌电图信号进行分析,并获得收缩周期的数量、振幅、最大值和持续时间。这些分析结果可以用于评估肌肉活动和相关的生理特征。请注意,具体的信号处理和分析方法可能因具体应用而有所不同。

通道肌电图信号分析:收缩周期的数量、振幅、最大值和持续时间研究

摘要

肌电图(EMG)信号是评估肌肉和神经系统功能的重要工具,通过分析单通道肌电图信号,可识别收缩周期并提取关键参数(数量、振幅、最大值、持续时间)。本文系统梳理了肌电图信号分析的核心方法,包括信号采集、预处理、收缩周期检测算法及参数提取技术,并结合临床与运动科学应用场景,提出优化策略以提升分析准确性。研究成果为神经肌肉疾病诊断、运动功能评估及康复工程提供理论支撑。

1. 引言

肌电图信号是肌肉纤维收缩时产生的动作电位在体表的叠加,其特征参数(如收缩周期数量、振幅、最大值、持续时间)可反映肌肉活动强度、疲劳程度及神经控制机制。由于肌电图信号具有非平稳性、随机性及个体差异性,准确提取参数需结合信号处理算法与生理学知识。本文聚焦单通道肌电图信号分析,探讨收缩周期检测方法及参数计算流程,为临床诊断与科研应用提供参考。

2. 肌电图信号采集与预处理

2.1 信号采集

  • 电极类型:针电极(插入式)适用于精准定位肌肉活动,表面电极(非侵入式)适用于无创监测。
  • 采样参数:采样率需≥1000Hz以捕捉高频成分,增益根据信号幅度调整(通常1000-5000倍)。
  • 记录条件:需明确肌肉状态(静息/收缩)、负载强度及运动任务类型(等长/等张收缩)。

2.2 预处理流程

  • 滤波
    • 带通滤波:保留50-500Hz频段以去除电源干扰(50Hz工频)及低频运动伪迹。
    • 小波去噪:利用Daubechies小波分解信号,通过阈值处理抑制高频噪声。
  • 整流与平滑
    • 全波整流:将负半周信号翻转,增强幅值信息。
    • 移动平均:窗口长度设为50-100ms,平滑信号以突出周期性特征。

3. 收缩周期检测算法

3.1 阈值法

  • 原理:设定幅值阈值(如RMS的3倍标准差),信号超过阈值视为收缩开始,低于阈值视为结束。
  • 优化:结合动态阈值调整(如基于滑动窗口统计)以适应信号基线漂移。

3.2 斜率阈值法

  • 原理:计算信号一阶导数,斜率超过阈值(如0.5V/s)标记收缩起始点。
  • 优势:对快速收缩检测敏感,适用于爆发性运动分析。

3.3 能量法

  • 原理:计算信号瞬时能量(E(t)=x²(t)),通过能量峰值定位收缩周期。
  • 应用:结合短时傅里叶变换(STFT)分析频率成分,区分主动收缩与噪声。

3.4 机器学习方法

  • 模型选择:支持向量机(SVM)、卷积神经网络(CNN)用于分类收缩/非收缩片段。
  • 数据需求:需标注大量样本(如公开肌电数据库如Ninapro)以训练模型。

4. 参数提取与计算

4.1 收缩周期数量

  • 统计方法:通过检测算法标记的起始/结束点计数,结合时间窗口排除异常周期(如持续时间<100ms)。

4.2 振幅与最大值

  • 均方根值(RMS)

反映信号整体能量,适用于评估肌肉持续收缩强度。

  • 峰峰值(Peak-to-Peak):最大值与最小值之差,表征瞬时爆发力。

4.3 持续时间

  • 计算方法:收缩结束时间与开始时间之差,需结合滤波处理以减少噪声干扰。

4.4 高级参数(可选)

  • 中位频率(MF):功率谱密度函数中50%能量对应的频率,用于评估肌肉疲劳(MF下降表明疲劳)。
  • 积分肌电(IEMG):信号绝对值积分,反映肌肉总活动量。

5. 应用场景与案例分析

5.1 临床诊断

  • 神经肌肉疾病
    • 肌萎缩侧索硬化症(ALS):收缩周期数量减少,振幅降低,伴随纤颤电位。
    • 周围神经损伤:运动单位电位时限增宽(>15ms),波幅增高(>5mV)。
  • 案例:苏黎世大学牙科医学中心利用肌电图分析咬肌活动,评估磨牙症患者夜间肌肉过度收缩频率及持续时间。

5.2 运动科学

  • 肌肉疲劳监测
    • 等长收缩:RMS随时间增加,MF下降。
    • 动态运动:如跑步中股四头肌IEMG与步频呈正相关。
  • 案例:通过分析高尔夫挥杆动作中肩部肌电图,优化运动技术以减少代偿性收缩。

5.3 康复工程

  • 假肢控制
    • 模式识别:提取表面肌电信号特征(如MF、RMS),驱动机械臂抓握动作。
    • 案例:基于肌电图的实时反馈系统帮助中风患者恢复上肢运动功能。

6. 挑战与未来方向

6.1 技术挑战

  • 噪声干扰:运动伪迹、电极接触不良导致信号失真。
  • 个体差异:肌肉厚度、脂肪层影响信号幅值,需建立个性化模型。

6.2 研究方向

  • 多模态融合:结合加速度计、惯性传感器数据提高收缩周期检测精度。
  • 深度学习优化:利用时序卷积网络(TCN)捕捉肌电图信号长期依赖关系。
  • 可穿戴设备:开发柔性电极与低功耗芯片,实现实时肌电监测。

7. 结论

单通道肌电图信号分析通过预处理、收缩周期检测及参数提取,为肌肉功能评估提供量化指标。未来需结合跨学科技术(如人工智能、材料科学)提升分析鲁棒性,推动其在临床、运动及康复领域的广泛应用。

📚2 运行结果

 

 

 

 

 

 

 

 

 

 

部分代码:

% ---------- READ INPUT -----------------------------------------------
  Numeric = dlmread('Input.csv',';', 'b3..b10');
        % input file is of prescribed structure
        % can be opend using MO excel, OpenOffice Calc, or Notepad

    Threshold = Numeric(1,1);   % Threshold for the signal
    TimePause = Numeric(2,1);   % [s], what time devide the activites
    ChannelInfo = Numeric(3,1); % which channel is cosen (1-left,2-right)
    ActDur = Numeric(4,1);      % minimal duration of the activity [s]
    MVC = Numeric(5,1);         % [mV] for maximal voluntary contraction 
    StartTime = Numeric(6,1);   % from when to load the signal [s]
    StopTime = Numeric(7,1);    % when to stop reading the file [s]
    RectDecision = Numeric(8,1);% full-wave rectification (0-no, 1-yes)

% ----------------------------------------------------------------------     
% Pick the experimental wav file file  
 [fileName,expPathname] = uigetfile('*.wav','Pick an experimental file');
 disp('                                                               ')

% -----------------------------
% file informations 
[y, fs, nbits, opts]=wavread2(fileName);
disp('----------- Information about the whole file -------------- ')
fprintf('Information of the sound file "%s":\n', fileName);
TotalDuration  = length(y)/fs;
fprintf('Total duration of the file = %g seconds\n', TotalDuration );
fprintf('Sampling rate = %g samples/second\n', fs);
fprintf('Bit resolution = %g bits/sample\n', nbits);
dt = 1/fs;
disp(['dt =', num2str(dt)]) % disp('7) time between adjacent steps')
tot_samples = length(y); % length of the file
 disp(['Total length of the loaded file is ', num2str(tot_samples )])

 size(y)
 %pause
disp('------------ Aditional informations -----------------------')
opts.fmt
disp('Output')
disp('1) format tag of the wave file')
disp('2) number of channels')
disp('3) number of samples per second (sampling rate)')
disp('4) number of bytes per second')
disp('5) ratio between nAveBytesPerSec and nSamplePerSec')
disp('6) bit resolution')

🎉3 参考文献

部分理论来源于网络,如有侵权请联系删除。

[1]成莹,马元超,陈震宇.运动想象辅助干预对脑卒中肢体功能障碍及肌电图信号的影响[J].检验医学与临床,2023,20(01):112-115.

[2]游淼,邹国栋,林婉华等.基于肌动图与肌电图信号的假肢控制系统的研究[J].北京生物医学工程,2011,30(06):574-577.

[3]罗琦琨,张庆陵,向明等.WIN98环境下肌电图信号高速采样的实现[J].上海生物医学工程,2002(01):49-53.

🌈4 Matlab代码实现

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值