matlab肌电信号去噪程序_表面肌电信号在人机协作中的应用 (1)

表面肌电信号(简称sEMG),本质是一簇运动单元所形成的局部电场总和,载有人的运动信息。通过解码sEMG来识别人的特征行为,进而赋予机器理解人运动意图的能力,是【人机交互】研究中的重要领域[1]。通常将电极贴在目标肌肉位置来记录在运动时肌肉周围的sEMG信号。

sEMG的信号的特点

  • 一维时间序列
  • 幅值和肌肉的激活程度成正比
  • 比目标肌肉运动提前30-150ms
  • 幅度在10mV以内
  • 能量主要集中在0-500Hz

对sEMG信号的处理包括:【预处理】和【特征提取】两个部分。

【预处理】是通过50Hz工频滤波和带通滤波,以获得有用频段信号。

【特征提取】算法包括【时域法】和【频域法】。

【时域法】本质上是提取信号幅值的变化规律。 例如:均方根RMS反应“肌肉激活强弱水平”物理特性。提取方法通常为滑动窗口法

87bc8967b2ae5558d50c28346238f6eb.png

其余时域特征提取算法包括:Willision幅值WA、阈值穿过次数TC、斜率变化次数SSC、自回归模型ARC等,数学形式都很好理解。

【频域法】顾名思义是分析信号的频率特性,方法包括:均值/中值频率、小波变换、功率谱密度。

【均值/中值频率】是利用一元函数的中值定理(参看高等数学I),确定敏感频率的位置。

【小波变换】可以把信号分解为不同尺度,并计算每个尺度上的低频/高频分量。

2b9121490ccb48e6d3a9bbbb10f1e0c5.png

小波变换和功率谱的数学形式可以参考:

Mr.括号:信号频域分析方法的理解(频谱、能量谱、功率谱、倒频谱、小波分析)​zhuanlan.zhihu.com
5c78adbd40a7087750df510a00729fdb.png

【功率谱】是【自相关函数】傅里叶变换形式。

因为一组信号可以视为随机变量,均方根非负,均方根函数的【幅频特性】便被定义为连续变化的能量。因此功率谱直观反映出能量随频率的变化。

功率谱计算通常利用“窗函数法”以防止频谱泄露[2](教科书的话太拗口)。可以简单理解为:时域信号离散化对应频域信号的周期化,而我们只计算某范围内信号的功率谱会导致丢失部分频谱,所以窗函数类似于一个补偿因子。

下面简单实践一下,以肱二头肌sEMG信号处理为例子。

1. 预处理

选择IIR数字滤波器去除工频干扰,并提取10-450Hz的有效信号。(此处推荐Matlab的fdatool工具设计滤波器)

636e978954f6c86ffccb6ac9cfbfae0e.png
信号处理前后幅频特性对比

d4646943ab1411fb383bc27c0c2ec604.png
信号处理前后时域对比

2. 时域特征:

展示了MAV(Mean of Absolute Value)、RMS、WL(Wave Length)结果。

dd9309d9d7a1fdd1ec9cf57b512f5fe6.png

可以看出【时域特征】主要以幅度来反映肌肉激活水平。

3. 时频特征:

采用Matlab自带的小波函数,设置5层分解。从结果看,分解层数增多,信号的低频特征提取的很明显,但丢失的信号细节也随之增多。

08d87906ffcc81b0ec2d4ac399e30b71.png
5层小波分解结果

思考:

1. sEMG本质是零均随机信号,适用于平稳时间序列的特征提取算法都可以尝试,但人的运动受到“环境、主体、任务”的影响,因此单一肌肉信号的时域特征变异度极高, 特征识别的有效性会降低。

2. 在频域特征中,特征提取的效率随算法的时间复杂度提升,如果不是offline处理,处理过程需要平衡效率和准确性。

代码:

Github传送门

参考:

1.丁其川, 熊安斌, 赵新刚, 韩建达. 基于表面肌电的运动意图识别方法研究及应用综述. 自动化学报, 2016, 42(1): 13-25

2. 奥本海默.信号处理

  • 4
    点赞
  • 0
    评论
  • 23
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

表情包
插入表情
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符
相关推荐
©️2020 CSDN 皮肤主题: 游动-白 设计师:白松林 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值