表面肌电信号sEMG之常用特征

1、均方根(RMS)

该特征是指在一定时间窗口内,sEMG信号的幅度均值的平方根,通常用于评估肌肉收缩的强度和疲劳程度。通常情况下,肌肉受到较大的负荷或疲劳时,RMS会降低,而在肌肉处于较轻负荷或较为放松状态时,RMS会增加。因此,通过监测sEMG信号的RMS值的变化,可以评估肌肉的疲劳程度和肌肉收缩的强度。

计算公式如下:

在这里插入图片描述
该式中,N 为采集到的表面肌电信号数据点数量,x_i为该信号数据序列中的第 i个数据,用于表示采集信号的平均功率。

matlab代码如下:

function feature = fRMS(data)
    % - RMS - Root Mean Square
    feature = sqrt(mean(data.^2));  
end

2、 平均绝对值(MAV)

该特征是指在一定时间窗口内,sEMG信号的幅度的绝对值的平均值,通常用于评估肌肉收缩的强度和疲劳程度。与均方根值(RMS)类似,MAV也可以用来估计肌肉收缩时的平均电信号强度。不同之处在于,MAV计算时不考虑信号的平方,而直接对幅度的绝对值进行平均。因此,MAV与RMS相比,更加稳定,对高频噪声的影响更小。通常情况下,肌肉受到较大的负荷或疲劳时,MAV会降低,而在肌肉处于较轻负荷或较为放松状态时,MAV会增加。因此,通过监测sEMG信号的MAV值的变化,可以评估肌肉的疲劳程度和肌肉收缩的强度。

计算公式如下:

在这里插入图片描述
该式中,N为采集到的表面肌电信号数据点数量,x_i 为该信号数据序列中的第i个数据,常用于判断手臂动作信号的强度幅值大小。

matlab代码如下:

function feature = fMAV(data)
    % - MAV - Mean Absolute Value
    feature = mean(abs(data));
end

3、过零点数 (ZC)

该特征是指在一定时间窗口内,sEMG信号的波形穿过水平基准线的次数,通常用于评估肌肉的收缩和放松状态,也可以用来估计肌肉的收缩状态以及肌肉收缩的强度。通常情况下,当肌肉收缩时,sEMG信号的波形会变得更加复杂,穿过水平基准线的次数也会增加,因此ZC也会增加。而当肌肉处于放松状态时,sEMG信号的波形会简单,穿过水平基准线的次数也会减少,因此ZC也会减少。

计算公式如下:

在这里插入图片描述
该式中,N为采集到的表面肌电信号数据点数量, x(i-1) 、x(i)、x(i+1) 为该信号数据序列中的第 i-1、i 、i+1个数据。

matlab代码如下:

function feature = fZC(data)
    % - ZC - Zero Crossing
    DeadZone = 10e-7;
    data_size = length(data);
    feature = 0;
    if data_size == 0
        feature = 0;
    else
        for i=2:data_size
            difference = data(i) - data(i-1);
            multy      = data(i) * data(i-1);
            if abs(difference)>DeadZone && multy<0
                feature = feature + 1;
            end
        end
        feature = feature/data_size;
    end
end

4、波形长度(WL)

该特征是指在一定时间窗口内,sEMG信号的波形长度的累加和,表示表面肌电信号的复杂度,通常用于评估肌肉的收缩和放松状态。通常情况下,当肌肉收缩时,sEMG信号的波形会变得更加复杂,波形的长度也会增加,因此WL也会增加。而当肌肉处于放松状态时,sEMG信号的波形会简单,波形的长度也会减少。

计算公式如下:

在这里插入图片描述
该式中,N为采集到的表面肌电信号数据点数量,x_i为该信号数据序列中的第 i个数据。

matlab代码如下:

function feature = fWL(data)
    % - WL - Waveform Length
    feature = sum(abs(diff(data)))/length(data);
end

5、斜率符号变化 (SSC)

该特征是指在sEMG信号的波形中,幅度变化率的符号发生变化的次数,常用于表示表面肌电信号即将发生波动变化的状态。

计算公式如下:

在这里插入图片描述
该式中,N为采集到的表面肌电信号数据点数量,x(i-1) 、x(i)、x(i+1) 为该信号数据序列中的第 i-1、i 、i+1个数据,
在这里插入图片描述

matlab代码如下:

function feature = fSSC(data)
    % - SSC - Slope Sign Change, number times
    DeadZone = 10e-7;
    data_size = length(data);
    feature = 0;
    if data_size == 0
        feature = 0;
    else
        for j=3:data_size
            difference1 = data(j-1) - data(j-2);
            difference2 = data(j-1) - data(j);
            Sign = difference1 * difference2;
            if Sign > 0
                if abs(difference1)>DeadZone || abs(difference2)>DeadZone
                    feature = feature + 1;
                end
            end
        end
        feature = feature/data_size;
    end
end

6、中值频率(MF)

该特征是指肌肉收缩期间产生的肌电信号的频率中值,通常用于评估肌肉收缩的力量和疲劳程度。MF是通过对表面肌电信号的功率谱密度进行分析得出的。在肌肉收缩期间,肌电信号的频率会随着肌肉收缩的力量和疲劳程度发生变化。通常情况下,肌肉受到较大的负荷或疲劳时,MF会降低,而在肌肉处于较轻负荷或较为放松状态时,MF会增加。

计算公式如下:
在这里插入图片描述
matlab代码如下:

function feature = fMF(data)
    % - MF - Mean Frequency
    feature = medfreq(data((i-1)*windownum+1:i*windownum), fs)./4e5;
end

该式中PSD表示表面肌电信号的功率谱,windownum表示窗口长度,i表示sEMG的通道, fs表示采样率。

7、平均功率频率(MPF)

该特征是指肌肉收缩期间产生的肌电信号的功率频率分布的平均值,可以用于评估肌肉收缩的力量和疲劳程度。即使信号中混杂了一些干扰噪声,利用该特征也能较好的识别信号中的有用信息,抗混叠能力很好。与中值频率(MF)类似,MPF也经常用于研究肌肉肌电活动的特征和变化。
计算公式如下:
在这里插入图片描述
matlab代码如下:

function feature = fMPF(data)
    % - MPF - Mean Power Frequency
    feature = meanfreq(data((i-1)*windownum+1:i*windownum), fs); 
end

该式中,f表示表面肌电信号的频率,windownum表示窗口长度,i表示sEMG的通道, fs表示采样率。

注:后续持续更新中…

猜你喜欢

转载自blog.csdn.net/weixin_45471642/article/details/131362551