当前位置: 首页 > news >正文

EMG肌肉信号处理合集 (一)

本文归纳了常见的肌肉信号预处理流程,方便EMG信号的后续分析。使用pyemgpipeline库 来进行信号的处理。文中使用了 UC Irvine 数据库的下肢数据。

目录

1 使用wrappers 定义数据类,来进行后续的操作

2 肌电信号DC偏置去除

3 带通滤波器处理

4 对肌电信号进行全波整流

5 肌电信号线性包络

6 幅度归一化 (已知最大收缩的幅度)

7 分割得到一部分时间段的信号

8 得到最后处理好的数据并且保存下来


1 使用wrappers 定义数据类,来进行后续的操作

import os
import numpy as np
from matplotlib.figure import SubplotParams
import pyemgpipeline as pepdata_folder = 'uci_lower_limb/A_TXT'
data_filename = '3Asen.txt'
trial_name = 'Sit'
channel_names = ['rectus femoris', 'biceps femoris', 'vastus internus', 'semitendinosus']
sample_rate = 1000def load_uci_lower_limb_txt(_filepath):with open(_filepath) as fp:collect_values = np.array([])lines = fp.readlines()for line in lines[7:]:  # first few lines are data descriptionitems = [float(e) for e in line.split('\t')[:4] if e != '']  # last column is not EMG dataif len(items) != 4:  # last few rows might not have EMG datacontinuecollect_values = np.concatenate((collect_values, np.array(items)))_data = collect_values.reshape(-1, 4)return _datafilepath = os.path.join(data_folder, data_filename)
data = load_uci_lower_limb_txt(filepath)
dataprint('data shape:', data.shape)emg_plot_params = pep.plots.EMGPlotParams(n_rows=4,fig_kwargs={'figsize': (8, 6),'dpi': 80,'subplotpars': SubplotParams(wspace=0, hspace=0.6),},line2d_kwargs={'color': 'red',}
)m = pep.wrappers.EMGMeasurement(data, hz=sample_rate, trial_name=trial_name,channel_names=channel_names, emg_plot_params=emg_plot_params)m.plot()

原始肌电信号

2 肌电信号DC偏置去除

m.apply_dc_offset_remover()
m.plot()

DC偏置去除的结果图

3 带通滤波器处理

m.apply_bandpass_filter(bf_order=4, bf_cutoff_fq_lo=10, bf_cutoff_fq_hi=450)
m.plot()

带通滤波器处理的结果图

4 对肌电信号进行全波整流

m.apply_full_wave_rectifier()
m.plot()

全波整流处理肌电信号

5 肌电信号线性包络

m.apply_linear_envelope(le_order=4, le_cutoff_fq=6)
m.plot()

肌电信号线性包络处理

6 幅度归一化 (已知最大收缩的幅度)

max_amplitude = [0.043, 0.069, 0.364, 0.068]  # assume the MVC is known
m.apply_amplitude_normalizer(max_amplitude)
m.plot()

幅度归一化结果 

 

7 分割得到一部分时间段的信号

m.apply_segmenter(20.5, 29.5)
m.plot()

分割结果

8 得到最后处理好的数据并且保存下来

m.datam.timestampm.export_csv('ex1_processed.csv')

http://www.lryc.cn/news/242052.html

相关文章:

  • 学自动化测试?我劝你还是算了吧。。。
  • 第一百七十八回 介绍一个三方包组件:SlideSwitch
  • Windows任务管理器内存性能界面各个参数含义
  • 深度学习人脸表情识别算法 - opencv python 机器视觉 计算机竞赛
  • 全职RISC-V芯片D1开发板使用adb串口COM连接设备和文件上传下载
  • STM32笔记---RTC
  • C语言之strstr函数的使用和模拟实现
  • 【间歇振荡器2片555时基仿真】2022-9-24
  • MySQL与PostgreSQL 的一些SQL
  • Spring 七大组件
  • 【UGUI】实现跑酷游戏分数血量显示在UI中
  • Vue和React对比
  • iPhone的实时照片不能直接查看,但有不少替代方法可以查看
  • 弹窗msvcp140_1.dll丢失的解决方法,超简单的方法分享
  • 人工智能基础_机器学习047_用逻辑回归实现二分类以上的多分类_手写代码实现逻辑回归OVR概率计算---人工智能工作笔记0087
  • Interactive Visual Data Analysis
  • Prometheus监控mysql nginx tomcat 黑盒监控
  • Altium Designer学习笔记12
  • csrf跨站请求伪造详解
  • GitLab的个人仓库转移到团队仓库
  • Linux:Ubuntu实现远程登陆
  • Unity中Shader的Standard材质解析(二)
  • 【Python 训练营】N_5 斐波那契数列
  • x-www-form-urlencoded的含义解释,getReader()和getParameter()的区别
  • python每日一题——3最长连续序列
  • 什么?Postman也能测WebSocket接口了?
  • requests库的学习(详细篇)
  • postgreSQL如何快速查询大表数据量
  • 微信小程序内嵌h5页面,实现动态设置顶部标题的功能
  • 手机IP地址会随位置变化吗