› 肌电位 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 精度下降