肌电位 EMG 信号处理模拟器 返回
医工学·生物信号

肌电位 EMG 信号处理模拟器

从表面肌电位(sEMG)定量化肌肉活动和疲劳的信号处理工具。改变肌力水平、采样频率、带通滤波、疲劳程度、电极噪声,实时计算 RMS振幅、中央值频率(MDF)、SNR、MU发火率。

参数设置
肌力水平 (MVC比)
%
相对于最大随意收缩 (MVC) 的肌力比例
疲劳程度
%
100%时 MDF 下降 25Hz(快肌脱落)
采样频率 fs
Hz
SENIAM 推荐 1000Hz 以上
RMS 窗宽
ms
越短时间分辨率越高,越长振幅越稳定
带通下限
Hz
消除运动伪迹
带通上限
Hz
sEMG 主成分上端
电极噪声水平
dBV
电极、放大器的基底噪声
计算结果
估计 RMS 振幅 (μV)
中央值频率 MDF (Hz)
平均频率 MNF (Hz)
SNR (dB)
MU 发火频率 (Hz)
RMS 窗内样本数
肌肉横截面与电极配置 — EMG 信号

贴于上臂肌肉上的差动电极捕捉 MUAP 重叠形成的生波形(绿)和 RMS 包络线(橙)。疲劳加重时,右上 MDF 下降。

EMG 生波形(时间域)
功率谱 + MDF / MNF 标记
理论·主要公式

$$RMS = \sqrt{\frac{1}{N}\sum_{i=1}^{N} x_i^{2}},\qquad MDF: \int_{0}^{MDF} P(f)\,df = \int_{MDF}^{\infty} P(f)\,df$$

RMS 是时间窗内 N 个样本的有效值,表示瞬时肌力。MDF 是将功率谱 P(f) 分为两半的频率,捕捉疲劳引起的下降。

$$MNF = \frac{\int_{0}^{\infty} f\,P(f)\,df}{\int_{0}^{\infty} P(f)\,df},\qquad SNR = 20\log_{10}\!\left(\frac{V_{\text{signal}}}{V_{\text{noise}}}\right)$$

MNF 是加权平均频率,SNR 是信号与噪声电压比 (dB)。实际应用中 MDF 对离群值更稳健,作为疲劳指标比 MNF 更常用。

$$f_{\text{Nyq}} = \frac{f_s}{2} \ge 1.2\,f_{\text{max}},\qquad N_{\text{win}} = T_{\text{win}}\cdot f_s$$

采样频率 fs 应为带通上限 fmax 的 2 倍加上 20% 的裕度。窗内样本数 N_win 过小时,RMS 的波动会增大。

肌电位 (EMG) 信号处理 — RMS 与中央值频率

🙋
肌电位(EMG)是肌肉发出的电信号吧?和心电图有区别吗?
🎓
对,肌纤维收缩时细胞膜会发生"脱分极"——电位翻转,作为运动单位动作电位(MUAP)向外泄漏。心电图(ECG)看的是整个心肌在一次心跳中的同步电位,以 mV 量级记录,而表面 EMG 观察的是许多运动单位异步随机发火的叠加,量级在 0.1~1mV,频谱在 20~450Hz。波形上,ECG 是规则的 P-QRS-T,而 EMG 看起来像嘈杂的噪声波形。
🙋
波形这么杂乱,怎么读取"肌力"呢?
🎓
这就是 RMS(均方根)的作用。在短时间窗内(通常 100~250ms),把信号平方、求平均、再开方,将振荡的正负波形压缩成一个"有效值"。MUAP 越多,振幅越大,RMS 就越大。RMS 基本上与肌力(%MVC)成线性正比。你可以拖动左边的"肌力水平"滑块,会看到 RMS(μV)线性增长。
🙋
那"中央值频率(MDF)"是干什么用的?不是也看同一块肌肉活动吗?
🎓
RMS 看的是"强度",MDF 看的是"速度"。当肌肉疲劳时,高速且力量大的 Type IIb(快肌)纤维首先脱落,只有较慢的 Type I(慢肌)还在工作。快肌的动作电位传导速度快,频谱分布在高频区间,失去它们后整个功率谱向低频移动。MDF(中央值频率)是把功率总量分成两半的频率点,用一个数字捕捉这种移动。健康上臂二头肌大约 85Hz,疲劳到 100% 时会下降到 60Hz 左右。
🙋
为什么默认采样 2000Hz、带通 20~450Hz?有依据吗?
🎓
这是 SENIAM(欧洲 EMG 标准化项目)和医工学教科书的推荐。表面 EMG 的主成分分布在 20~450Hz。下限 20Hz 以下是皮肤-电极界面的"运动伪迹"和商用电源的 50/60Hz,上限 500Hz 以上基本是热噪声,都要滤掉。采样 2000Hz 对上限 450Hz 来说有 >20% 的奈奎斯特余裕,能无混叠地捕捉全频带。如果用便宜单片机只能 500Hz 采样,你会发现在本工具里必须把带通上限降到 200Hz 以下,否则奈奎斯特判定会红灯。
🙋
刚才算出来 SNR 是 22.97dB,这个水平怎么样?
🎓
实际工作中,SNR > 20dB 就是"信号和噪声相差一个数量级,可以用于分析"的水平。SNR < 10dB 时连肌肉活动有无都很难判断。当 SNR 太低时,可以通过 (1) 皮肤处理(去角质、酒精擦拭)让电极阻抗 < 5kΩ,(2) 电极间距 20mm、贴于肌腹,(3) 用差动放大器,(4) 加 50/60Hz 陷波滤波 等手段改善。你可以在本工具里把"电极噪声"从 −35dBV 调到 −20dBV,会看到 SNR 急剧下降,警告也会出现。

常见问题

RMS(Root Mean Square,均方根)是时间窗内信号振幅的有效值,计算方式为 RMS = √(1/N · Σx²)。由于EMG是正负振动的波形,简单平均会趋近于零,但平方后再平均可以表示"信号摆动的幅度"。随着肌纤维脱分极产生的MUAP活动增加,EMG振幅也会增加,RMS基本上与肌力(%MVC)成正比增长。这就是"RMS被用作肌活动定量指标"的原因。典型窗宽为100~250ms,本工具默认使用200ms。
肌肉疲劳时,高速且力量大的 Type IIb(快肌)纤维首先脱落,较慢的 Type I(慢肌)残留。快肌的动作电位传导速度快,频谱分布在高频段,失去这部分后,整体功率谱向低频移动。MDF(中央值频率,功率总量的一半所在的频率)可以用一个数值捕捉这种移动。健康的上臂二头肌安静时 MDF ≈ 85Hz,维持最大随意收缩(MVC)过程中疲劳加重时,MDF 通常下降 10~25Hz。
表面EMG(sEMG)的主要成分分布在 20~450Hz,因此带通滤波下限 20Hz(抑制运动伪迹和商用电源 50/60Hz 的影响),上限 400~500Hz 是标准。采样应满足奈奎斯特准则,最低为上限的 2 倍,但实际需要加上10~20% 的裕度,通常采用 1000~2000Hz。SENIAM 指南推荐 1000Hz 以上。本工具默认 2000Hz、20~450Hz,自动判定奈奎斯特余裕(fs / 2fmax)是否 ≥ 1.2。
参考标准是 SNR > 20dB(信号幅度是噪声的 10 倍以上)时,RMS 和 MDF 都能稳定输出。在 10~20dB 范围,振幅可用但频率分析(MDF)的波动会增大;SNR < 10dB 时,连肌肉活动有无的判定都会困难。当 SNR 低时,可以通过 (1) 皮肤处理(去角质、酒精清拭)使接触阻抗 < 5kΩ,(2) 电极间距保持 20mm、贴于肌腹,(3) 使用差动放大器,(4) 加 50/60Hz 陷波滤波 等措施改善。

实际应用

康复·运动治疗:脑卒中片瘫患者的生物反馈训练中,在患侧前胫骨肌等肌肉贴表面 EMG 电极,将 RMS 实时显示在屏幕上。患者以"把屏幕的柱子升高"为目标主动收缩肌肉,促进运动学习。物理治疗师通过 MDF 经时变化判断疲劳,设置合理的训练负荷避免过度。

假肢(肌电义手)控制:截肢者的残存肌肉贴电极,当 EMG 的 RMS 超过阈值时义手电动夹爪就闭合——这是肌电假肢的基本原理。用多个电极的 RMS 模式配合机器学习,可以识别抓握、夹持、指点等多种姿态。CASIO、Gakken 的 EMG 服装或 Myo Armband 等消费级设备,本质上都是这个原理。

人因工程·运动生理学:长时间 PC 作业时测斜方肌的 RMS 和 MDF,可以定量看出办公桌高度、坐姿不同对疲劳进展的影响。体育领域,投球姿态稳定性评估、跑步时股四头肌左右差异检测、举重时核心肌群活动可视化,都依赖于 EMG 量化,有助于改进动作和预防伤害。

神经内科·肌肉病诊断:ALS(肌萎缩性侧索硬化症)或肌营养不良症患者的 EMG 振幅和频谱特征与健康人大不相同,原因是运动单位脱落和肌纤维萎缩。确诊需要肌电图(侵入式针电极),但表面 EMG 不侵入,常用于定期评估和筛查。从 CAE 的角度,这也是多尺度生物电生理模拟(细胞→肌束→体表电位)的重要验证数据。

常见误解和注意事项

最大的误解是"EMG 的 RMS 绝对值可以测出肌力(N)"。实际上,即使肌力完全相同,电极位置偏离肌腹几毫米,RMS 就会变化 30% 以上。皮下脂肪厚度也会改变转移系数,重新贴电极后校准全部失效。RMS 必须用相对值——"该被试这天的 MVC 的百分之几"来正规化。本工具之所以要求输入"MVC 比",就是这个原因。"跨机器、跨个体比较绝对 μV"几乎没有意义。

其次是"采样率越高精度越高"的思想。表面 EMG 的主成分只在 20~450Hz,即使用 5000Hz 采样,一旦 500Hz 以上的频率被低通滤波掉,信息量和 1000Hz 采样没有区别。反而高采样会增加数据量和高频噪声(放大器热噪、AD量子化噪)的负担。针电极 EMG(>10kHz 必要)和表面 EMG(1~2kHz 足够)不能混为一谈。在本工具里试试把采样改成 5000Hz,会发现 SNR 不变、只有窗内样本数增加。

最后"MDF 下降 = 必定肌肉疲劳"不一定对。MDF 下降的原因还有:(1) 电极移位导致电极-皮肤阻抗上升,(2) 混入了低频运动伪迹,(3) 带通下限设得过高,把基础频率切掉了,等等。用 MDF 判断疲劳时,必须同时看 RMS 和生波形,剔除含伪迹的数据段。此外,被试的体表温度下降也会使传导速度变慢、MDF 下降,冷库里做实验或接触冷却装置时要特别小心。

使用指南

  1. 设置肌力发挥率(0~100%),确定上臂二头肌或前胫骨肌的收缩水平
  2. 输入疲劳程度(0~8小时连续运动),启用中央值频率(MDF)的疲劳下降模拟
  3. 设置采样率(2000~10000 Hz)和RMS计算窗宽(50~500 ms)
  4. 点击"开始分析"生成、处理表面肌电信号,实时显示RMS振幅、MDF、MNF、SNR、MU发火频率
  5. 监测频率谱(0~500 Hz)和时间序列波形(0~5秒)

具体计算示例

大腿直肌收缩60%最大随意收缩、疲劳程度3小时、采样率4000 Hz、RMS窗100 ms的情况:输出RMS振幅380 μV、初始MDF 145 Hz→疲劳后120 Hz(下降率17%)、MNF 138 Hz、SNR 18.2 dB、MU发火频率27 Hz。噪声水平0~30 μV用于评估信号质量。

实际工作中的注意事项

  1. 电极配置:双极排列于肌腹中心(电极间距10~20 mm),参考电极贴在骨突处,用 DC 隔断滤波(20~500 Hz 通带)消除伪迹
  2. MDF 下降超过20%时判定为肌肉疲劳导致运动能力下降,应减低作业强度或休息
  3. MU电动单位发火频率下降时,MDF 会同步下降,确认两个指标的相关性
  4. 采样率不足(<2000 Hz)会丢失奈奎斯特频率以上的高频分量,导致 MDF 精度下降