1.sEMG信号简介

表面肌电信号是从皮肤表面获取的关于肌肉活动的微弱生物电信息,能够为肌肉活动状态分析、神经肌肉功能分析及病理分析等研究提供有效的帮助。由于受到检测仪器、环境和肌肉自身生理特性等多种因素的影响,sEMG信号在采集过程中势必会引入干扰噪声,使得难以直接对其进行分析研究,因而需要对采集到的sEMG信号进行降噪处理,以提高信号质量。

2.小波阈值去噪

2.1小波阈值去噪原理

肌电信号一般用功率谱密度 python_活动状态点离散含噪信号为
肌电信号一般用功率谱密度 python_matlab_02
式中 肌电信号一般用功率谱密度 python_matlab_03 为原始信号,肌电信号一般用功率谱密度 python_肌电信号一般用功率谱密度 python_04 为服从 肌电信号一般用功率谱密度 python_肌电信号一般用功率谱密度 python_05 的高斯白噪声。
小波阈值法对含噪信号 肌电信号一般用功率谱密度 python_肌电信号一般用功率谱密度 python_06 消噪主要有以下三个步骤:
肌电信号一般用功率谱密度 python_肌电信号一般用功率谱密度 python_07 先对含噪信号进行 肌电信号一般用功率谱密度 python_matlab_08 尺度的正交小波变换,得到一组小波系数 肌电信号一般用功率谱密度 python_matlab_09
肌电信号一般用功率谱密度 python_肌电信号一般用功率谱密度 python_10 再对 肌电信号一般用功率谱密度 python_matlab_09 进行阈值处理,确定小波系数的估计值 肌电信号一般用功率谱密度 python_正交小波变换_12
肌电信号一般用功率谱密度 python_去噪_13 利用 肌电信号一般用功率谱密度 python_正交小波变换_12 进行小波重构,得到估计信号 肌电信号一般用功率谱密度 python_活动状态_15

2.2估计小波系数的方法

肌电信号一般用功率谱密度 python_肌电信号一般用功率谱密度 python_07 硬阈值估计法,其定义为
肌电信号一般用功率谱密度 python_肌电信号一般用功率谱密度 python_17
肌电信号一般用功率谱密度 python_肌电信号一般用功率谱密度 python_10 软阈值估计法,其定义为
肌电信号一般用功率谱密度 python_活动状态_19

2.3小波阈值选取

肌电信号一般用功率谱密度 python_肌电信号一般用功率谱密度 python_07 全局阈值
肌电信号一般用功率谱密度 python_去噪_21
肌电信号一般用功率谱密度 python_肌电信号一般用功率谱密度 python_10 SUREShrink阈值
使用斯坦因的无偏风险估计(SURE)原理进行自适应阈值选择
肌电信号一般用功率谱密度 python_去噪_13 Minimax阈值

3小波基函数和分解层数选择

3.1小波基函数选择

对含噪的sEMG信号进行小波分解,更具Mallat最优小波基的选择准则,综合考虑小波基的对称性、正交性、消失矩及紧支性等数学特征最终选择Sym8小波基,因为它的尺度函数波形与sEMG信号波形近似,小波函数的对称性较好。下图为常见小波的数学特征:

肌电信号一般用功率谱密度 python_matlab_24

3.2分解层数选择

分解层数对于消噪效果的影响很大,分解层数过多信号失真也会越大,还会导致运算量增大,处理变慢。分解层数过少则消噪效果不理想。

实验所使用的sEMG信号的采样频率为1000Hz,,根据奈奎斯特采样定理可知,信号的最高频率可为500Hz。如果进行4层小波分解,对应的每层频带范围如下图所示,其中肌电信号一般用功率谱密度 python_matlab_25表示近似系数,肌电信号一般用功率谱密度 python_活动状态_26表示细节系数。

肌电信号一般用功率谱密度 python_去噪_27

观察表面肌电信号的频域情况,发现能量在300Hz以下的部分占全部能量的80%,主要集中在50至220Hz之间。由此可得,分解次数选择4层。

4小波阈值去噪matlab实现

4.1wavelet signal denoiser

wavelet signal denoiser是matlab用于可视化去噪一维信号并比较去噪效果的交互式工具,可以轻松调整默认参数并应用不同的降噪技术。

打开方式

肌电信号一般用功率谱密度 python_matlab_28 Toolstrip:在工具栏中,选择应用程序,找到信号处理和通信下的wavelet signal denoiser,单击选择打开。

肌电信号一般用功率谱密度 python_matlab_28 命令提示符:在命令窗口,输入 waveletSignalDenoiser,并运行。

肌电信号一般用功率谱密度 python_正交小波变换_30

4.2matlab批处理文件

实验所采集的数据很多,通常都是同类型的数据,处理方式等大都相同,采用文件批处理可以大大减少操作步骤,提高效率。
matlab代码:

list=dir('E:\sEMG_data\*.mat');
k=length(list);
for i=1:k
    load(list(i).name)
    for j=1:4
        Y=data{:,j};
        Y = wdenoise(Y,4, ...
            'Wavelet', 'sym8', ...
            'DenoisingMethod', 'SURE', ...
            'ThresholdRule', 'Hard', ...
            'NoiseEstimate', 'LevelIndependent');
    end
end

MATLAB中小波去噪: https://www.mathworks.com/help/wavelet/ref/wdenoise.html.
wavelet signal denoiser: https://www.mathworks.com/help/wavelet/ref/waveletsignaldenoiser-app.html.
参考文献: http://www.cnki.com.cn/Article/CJFDTotal-XXYK201102003.htm.