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')
相关文章:
EMG肌肉信号处理合集 (一)
本文归纳了常见的肌肉信号预处理流程,方便EMG信号的后续分析。使用pyemgpipeline库 来进行信号的处理。文中使用了 UC Irvine 数据库的下肢数据。 目录 1 使用wrappers 定义数据类,来进行后续的操作 2 肌电信号DC偏置去除 3 带通滤波器处理 4 对肌电…...
学自动化测试?我劝你还是算了吧。。。
本人7年测试经验,在学测试之前对电脑的认知也就只限于上个网,玩个办公软件。这里不能跑题,我为啥说:自学软件测试,一般人我还是劝你算了吧?因为我就是那个一般人! 软件测试基础真的很简单&…...
第一百七十八回 介绍一个三方包组件:SlideSwitch
文章目录 1. 概念介绍2. 使用方法3. 代码与效果3.1 示例代码3.2 运行效果 4. 内容总结 我们在上一章回中介绍了"如何创建垂直方向的Switch"相关的内容,本章回中将 介绍SlideSwitch组件.闲话休提,让我们一起Talk Flutter吧。 1. 概念介绍 我们…...
Windows任务管理器内存性能界面各个参数含义
任务管理器的内存性能界面提供了一些关键参数,这些参数可以帮助你了解系统中内存的使用情况。以下是一些常见的参数及其含义: 已提交(Committed): 表示已分配的物理内存和虚拟内存的总和。已提交的内存包括当前正在使…...
深度学习人脸表情识别算法 - opencv python 机器视觉 计算机竞赛
文章目录 0 前言1 技术介绍1.1 技术概括1.2 目前表情识别实现技术 2 实现效果3 深度学习表情识别实现过程3.1 网络架构3.2 数据3.3 实现流程3.4 部分实现代码 4 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 深度学习人脸表情识别系…...
全职RISC-V芯片D1开发板使用adb串口COM连接设备和文件上传下载
将两个USB端口都连接到工作电脑 推荐使用ADB工具访问开发板,下载连接如下: Windows版本:https://dl.google.com/android/repository/platform-tools-latest-windows.zip Mac版本:https://dl.google.com/android/repository/pla…...
STM32笔记---RTC
目录 一、RTC简介 二、主要特性 三、功能描述 3.1 读RTC寄存器 3.2 配置RTC寄存器 四、BKP简介 五、RTC_Init() 1. 函数BKP_ReadBackupRegister 2.RCC_LSEConfig设置外部低速晶振(LSE) 3.RTC基本结构 5.RTC_Init()实现 6.time.h 一、R…...
C语言之strstr函数的使用和模拟实现
C语言之strstr函数的模拟实现 文章目录 C语言之strstr函数的模拟实现1. strstr函数的介绍2. strstr函数的使用3. strstr的模拟实现3.1 实现思路3.2 实现代码 1. strstr函数的介绍 函数声明如下: char * strstr ( const char * str1, const char * str2 ); strs…...
【间歇振荡器2片555时基仿真】2022-9-24
缘由multisim出现这个应该怎么解决吖,急需解决-嵌入式-CSDN问答 输出一定要有电阻分压才能前后连接控制否则一定报错。...
MySQL与PostgreSQL 的一些SQL
MySQL 1、MYSQL输出重定向 将SQL内容输出到文件 nohup mysql -h127.0.0.1 -uroot -ppassword -Ne "sql语句;" > /home/mysql/data/xxxxx.txt &2、时间格式转换 时间转换,转10位时间戳 select UNIX_TIMESTAMP(2021-02-27 00:00:00)SELECT …...
Spring 七大组件
文章目录 Spring 七大组件 Spring 七大组件 核心容器(Spring core) 核心容器提供Spring框架的基本功能。Spring以bean的方式组织和管理Java应用中的各个组件及其关系。Spring使用BeanFactory来产生和管理Bean,它是工厂模式的实现。BeanFactory使用控制反转(IOC)模式…...
【UGUI】实现跑酷游戏分数血量显示在UI中
//1.实现让玩家的金币分数显示在UI文本中 2.让血量和滑动条关联起来 这一节课主要学会获取组件并改变属性,举一反三! using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using TMPro;//1.实现让玩…...
Vue和React对比
Vue和React都是流行的前端JavaScript框架,它们有很多相似点和不同点,以下是它们的优缺点。 相似点: 都使用了组件化的开发模式,使得应用程序更易于理解和维护。都支持虚拟DOM,提高了页面重绘性能。都支持模板化编程方…...
iPhone的实时照片不能直接查看,但有不少替代方法可以查看
苹果在iPhone 6s和iPhone 6s Plus上推出了实时照片(livp)功能,该功能也出现在最新的iPhone中。正如你所知,实时照片功能是电影和静态图像的混合。也就是说,实时照片既不是照片也不是视频。 当你在iPhone上拍摄实时照片时,iOS会创建一个MOV文件和一个JPEG文件。 如果你…...
弹窗msvcp140_1.dll丢失的解决方法,超简单的方法分享
在计算机使用过程中,我们经常会遇到一些错误提示,其中最常见的就是缺少某个文件的错误。最近,我在使用某些软件时,遇到了一个名为“msvcp140_1.dll”的错误提示。这个错误通常出现在运行某些程序时,由于缺少了msvcp140…...
人工智能基础_机器学习047_用逻辑回归实现二分类以上的多分类_手写代码实现逻辑回归OVR概率计算---人工智能工作笔记0087
然后我们再来看一下如何我们自己使用代码实现逻辑回归的,对二分类以上,比如三分类的概率计算 我们还是使用莺尾花数据 首先我们把公式写出来 def sigmoid(z): 定义出来这个函数 可以看看到这需要我们理解OVR是如何进行多分类的,我们先来看这个 OVR分类器 思想 OVR(One-vs-…...
Interactive Visual Data Analysis
Words&Contents Home | Interactive Visual Data Analysis Book Outline 这本书对视觉、互动和分析方法进行了系统而全面的概述,作为数据可视化方面比较好的读物; 目录 Words&Contents Book Outline (一)Introduct…...
Prometheus监控mysql nginx tomcat 黑盒监控
部署consul_exporter,用与服务发现 https://github.com/prometheus/consul_exporter/releases/download/v0.9.0/consul_exporter-0.9.0.linux-amd64.tar.gz 注册 ootubuntu20:~# cat consul_export.json rootubuntu20:~# cat consul_export.json {"service…...
Altium Designer学习笔记12
把几个层理解下: layer名称功能说明信息Toplayer信号层铜箔层,电气连接的层Bottomlayer信号层铜箔层,电气连接的层Internal Planes内层连接地和电源上,一般情况下不布线,是由整片铜膜组成的Mechanical 1机械层电路板机…...
csrf跨站请求伪造详解
【1】csrf跨站请求伪造的解释及解决方法 CSRF(Cross-Site Request Forgery)跨站请求伪造是一种常见的网络攻击方式。攻击者通过诱导受害者访问恶意网站或点击恶意链接 将恶意请求发送到目标网站上利用受害者在目标网站中已登录的身份来执行某些操作从而…...
React 第五十五节 Router 中 useAsyncError的使用详解
前言 useAsyncError 是 React Router v6.4 引入的一个钩子,用于处理异步操作(如数据加载)中的错误。下面我将详细解释其用途并提供代码示例。 一、useAsyncError 用途 处理异步错误:捕获在 loader 或 action 中发生的异步错误替…...
从WWDC看苹果产品发展的规律
WWDC 是苹果公司一年一度面向全球开发者的盛会,其主题演讲展现了苹果在产品设计、技术路线、用户体验和生态系统构建上的核心理念与演进脉络。我们借助 ChatGPT Deep Research 工具,对过去十年 WWDC 主题演讲内容进行了系统化分析,形成了这份…...
leetcodeSQL解题:3564. 季节性销售分析
leetcodeSQL解题:3564. 季节性销售分析 题目: 表:sales ---------------------- | Column Name | Type | ---------------------- | sale_id | int | | product_id | int | | sale_date | date | | quantity | int | | price | decimal | -…...
什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南
文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果
船舶制造装配管理现状:装配工作依赖人工经验,装配工人凭借长期实践积累的操作技巧完成零部件组装。企业通常制定了装配作业指导书,但在实际执行中,工人对指导书的理解和遵循程度参差不齐。 船舶装配过程中的挑战与需求 挑战 (1…...
力扣热题100 k个一组反转链表题解
题目: 代码: func reverseKGroup(head *ListNode, k int) *ListNode {cur : headfor i : 0; i < k; i {if cur nil {return head}cur cur.Next}newHead : reverse(head, cur)head.Next reverseKGroup(cur, k)return newHead }func reverse(start, end *ListNode) *ListN…...
Python+ZeroMQ实战:智能车辆状态监控与模拟模式自动切换
目录 关键点 技术实现1 技术实现2 摘要: 本文将介绍如何利用Python和ZeroMQ消息队列构建一个智能车辆状态监控系统。系统能够根据时间策略自动切换驾驶模式(自动驾驶、人工驾驶、远程驾驶、主动安全),并通过实时消息推送更新车…...
零知开源——STM32F103RBT6驱动 ICM20948 九轴传感器及 vofa + 上位机可视化教程
STM32F1 本教程使用零知标准板(STM32F103RBT6)通过I2C驱动ICM20948九轴传感器,实现姿态解算,并通过串口将数据实时发送至VOFA上位机进行3D可视化。代码基于开源库修改优化,适合嵌入式及物联网开发者。在基础驱动上新增…...
【WebSocket】SpringBoot项目中使用WebSocket
1. 导入坐标 如果springboot父工程没有加入websocket的起步依赖,添加它的坐标的时候需要带上版本号。 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId> </dep…...
第八部分:阶段项目 6:构建 React 前端应用
现在,是时候将你学到的 React 基础知识付诸实践,构建一个简单的前端应用来模拟与后端 API 的交互了。在这个阶段,你可以先使用模拟数据,或者如果你的后端 API(阶段项目 5)已经搭建好,可以直接连…...
