EMG preprocess

实现Stability of muscle synergies for voluntary actions after cortical stroke in humans里的肌电预处理过程:

The collected EMGs were high-pass-filtered with a window-based finite impulse response filter (50th order, cutoff of 50 Hz) to remove motion artifacts, rectified, low-pass-filtered (50th order, cutoff of 20 Hz) to remove noise, and then integrated over 25-ms intervals to capture envelopes of EMG activity. To correct for interarm EMG-amplitude differences arising from differences in electrode placement and to ensure that subsequent extraction of muscle synergies from the EMGs would not be biased against low-amplitude muscles, data from each arm and each muscle were normalized to a suitable maximal value. This value was found by first calculating the median trial maximum across all trials of every task, and then identifying the maximum of these medians across all tasks. Taking the median (instead of the maximum amplitude) ensures that the above normalization is robust against occasional high-amplitude spikes arising from noise.

根据以上内容,分为以下步:

一、滤波

我用的是matlab实现,利用到了FDATool工具箱来得到滤波器参数,具体操作是在matlab里输入FDATool就会出来以下界面,根据要求,20以上高通,50Hz以下低通(不就是带通么?)根据实际数值填好后点击Design Filter,就能得到Filter Coefficients,最后File→Export出Coefficient或者object(没啥大区别);

回到matlab主界面,输入
HpLp_data = filter(NumBand,1,LS(18429:20429,1));%(如果保存的是object,filter(Hd, EMG))
plot(LS(18429:20429,1))
hold on
plot(HpLp_data)。
然后整流(就是abs操作)
processed_emg = abs(HpLp_data)

在这里插入图片描述

在这里插入图片描述

结果如下,完美得到包络线:
在这里插入图片描述可以对比原文,结果是相似的。

尝试用5~20 Hz带通(很多文章也用这个频带),感觉结果也很好。
在这里插入图片描述

二、 归一化

这一步是为了矫正,思路是多种tasks的多次trial进行求均值,求出均值中的最大值(可以避免spike似的肌电值最大值),即每块肌肉在做多种动作的时候会有一个(均值的)最大值,让这块肌肉的所有trial的肌电都除以它,结果就能使每块肌肉单独相对于任务都归一化了,就不会因为电极位置或其他因素有偏差了,所有归一化的肌肉信号作为整体留待后续进行分析。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值