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.pswp.cn/news/161176.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/161176.shtml
英文地址,請注明出處:http://en.pswp.cn/news/161176.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

SpringCloud - 新版淘汰 Ribbon,在 OpenFeign 中整合 LoadBalancer 負載均衡

目錄 一、LoadBalancer 負載均衡 1.1、前言 1.2、LoadBalancer 負載均衡底層實現原理 二、整合 OpenFeign LoadBalancer 2.1、所需依賴 2.2、具體實現 2.3、自定義負載均衡策略 一、LoadBalancer 負載均衡 1.1、前言 在 2020 年以前的 SpringCloud 采用 Ribbon 作為負載…

OOM問題排查+Jvm優化

OOM問題排查: 1、top命令:查看cpu和內存的使用情況。 2、jstat命令:查看YGC和FGC情況,一般都是老年代不夠用。導致OOM 3、jmap命令: 查看哪個類的實例過多,以每個類占用多少了內存。4、jstack 查看線程與線程之間的阻…

Linux用戶名用戶組命令

添加用戶(為sam用戶添加一個主目錄/home/sam) useradd -d /home/sam -m sam新建一個用戶gem,該用戶的登錄shell是/bin/sh,它屬于group用戶組,同時又屬于adm和root用戶組,其中group用戶組是其主組 添加用戶賬號就是在/etc/passwd文件中為新用戶添加一條記…

80基于matlab的小波包熵與模糊C均值聚類的故障診斷,以凱斯西儲大學軸承數據為例進行分析

基于matlab的小波包熵與模糊C均值聚類的故障診斷,以凱斯西儲大學軸承數據為例進行分析。對數據進行小波包分解后重構,然后提取各頻帶能量分布,后計算小波包熵進行故障診斷。輸出特征可視化結果。數據可更換自己的,程序已調通&…

Git遠程庫操作(GitHub)

GitHub 網址:https://github.com/ 創建遠程倉庫 遠程倉庫操作 命令名稱作用git remote -v查看當前所有遠程地址別名git remote add 別名 遠程地址起別名git push 別名 分支推送本地分支上的內容到遠程倉庫git clone 遠程地址將遠程倉庫的內容克隆到本地git pull 別…

文件格式校驗

json格式校驗 非嚴格模式 json.loads(data, strictFalse) 如果strict為false(默認值為True),則字符串中允許使用控制字符。此上下文中的控制字符是那些字符代碼在0–31范圍內的字符,包括“\t”(制表符)、“…

基于STM32的色彩識別與分類算法優化

基于STM32的色彩識別與分類算法優化是一項與圖像處理和機器學習相關的研究任務,旨在實現高效的色彩識別和分類算法在STM32微控制器上的運行。本文將介紹基于STM32的色彩識別與分類算法優化的原理和實現步驟,并提供相應的代碼示例。 1. 色彩識別與分類概…

[SIGGRAPH-23] 3D Gaussian Splatting for Real-Time Radiance Field Rendering

pdf | proj | code 本文提出一種新的3D數據表達形式3D Gaussians。每個Gaussian由以下參數組成:中心點位置、協方差矩陣、可見性、顏色。通過世界坐標系到相機坐標系,再到圖像坐標系的仿射關系,可將3D Gaussian映射到相機坐標系,通…

.NET面試題2

1.請解釋一下C#中的委托(Delegate)。 委托是一種類型安全的函數指針,它可以將方法作為參數傳遞或存儲在變量中。通過委托,可以實現方法的回調、事件處理等功能。委托在C#中使用delegate關鍵字進行聲明,可以根據方法簽名…

c語言:用迭代法解決遞歸問題

題目&#xff1a; 解釋&#xff1a;題目的意思就是用迭代法的空間和時間復雜的太高了&#xff0c;需要我們減小空間與時間的復雜度&#xff0c;我就想到了迭代法&#xff0c;思路和代碼如下&#xff1a; #include <stdio.h> //這里是遞歸法轉迭代法 int main() {int x,i…

Rust語言特性探秘:宏的魔力

大家好&#xff01;我是lincyang。 今天我們繼續深入探討Rust語言中的一個有趣而強大的特性——宏&#xff08;Macros&#xff09;。 宏在Rust中扮演著特殊的角色&#xff0c;不僅提高了代碼的靈活性&#xff0c;還增強了代碼的可重用性。接下來&#xff0c;我們會通過具體的…

[ 云計算 | AWS 實踐 ] 基于 Amazon S3 協議搭建個人云存儲服務

本文收錄于【#云計算入門與實踐 - AWS】專欄中&#xff0c;收錄 AWS 入門與實踐相關博文。 本文同步于個人公眾號&#xff1a;【云計算洞察】 更多關于云計算技術內容敬請關注&#xff1a;CSDN【#云計算入門與實踐 - AWS】專欄。 本系列已更新博文&#xff1a; [ 云計算 | …

Redis-Redis緩存高可用集群

1、Redis集群方案比較 哨兵模式 在redis3.0以前的版本要實現集群一般是借助哨兵sentinel工具來監控master節點的狀態&#xff0c;如果master節點異常&#xff0c;則會做主從切換&#xff0c;將某一臺slave作為master&#xff0c;哨兵的配置略微復雜&#xff0c;并且性能和高可…

深信服技術認證“SCSA-S”劃重點:信息收集

為幫助大家更加系統化地學習網絡安全知識&#xff0c;以及更高效地通過深信服安全服務認證工程師考核&#xff0c;深信服特別推出“SCSA-S認證備考秘笈”共十期內容&#xff0c;“考試重點”內容框架&#xff0c;幫助大家快速get重點知識~ 劃重點來啦 深信服安全服務認證工程師…

前端相關免查整合-vue、es、工具類等

知識 工具篇 網頁 取色器 F12 之后&#xff0c; style里面選一個顏色&#xff0c;然后點擊鉛筆&#xff0c;復制值 dayjs 用法 const date dayjs(2021-09-01); const formattedDate dayjs(2021-09-01).format(YYYY-MM-DD); console.log(formattedDate); // 輸出&#…

SEO從業人員提問常用的ChatGPT通用提示詞模板

如何提高網站在搜索引擎中的排名&#xff1f; 如何評估網站的SEO效果和優化潛力&#xff1f; 如何運用關鍵詞研究和競爭對手分析來制定SEO策略&#xff1f; 如何優化網站的內容、結構和元數據來提高SEO效果&#xff1f; 如何運用外部和內部鏈接來提高網站的權威性和排名&am…

OpenCvSharp從入門到實踐-(02)圖像處理的基本操作

目錄 圖像處理的基礎操作 1、讀取圖像 1.1、讀取當前目錄下的圖像 2、顯示圖像 2.1、Cv2.ImShow 用于顯示圖像。 2.2、Cv2.WaitKey方法用于等待用戶按下鍵盤上按鍵的時間。 2.3、Cv2.DestroyAllWindows方法用于銷毀所有正在顯示圖像的窗口。 2.4實例1-顯示圖像 2.4實例…

分類預測 | Matlab實現KPCA-IDBO-LSSVM基于核主成分分析-改進蜣螂算法優化最小二乘支持向量機的分類預測

分類預測 | Matlab實現KPCA-IDBO-LSSVM基于核主成分分析-改進蜣螂算法優化最小二乘支持向量機的分類預測 目錄 分類預測 | Matlab實現KPCA-IDBO-LSSVM基于核主成分分析-改進蜣螂算法優化最小二乘支持向量機的分類預測分類效果基本描述程序設計參考資料 分類效果 基本描述 1.多特…

校園圈子論壇,交友,帖子內短視頻,二手市場,APP小程序H5三端交付,源碼交付,支持二開

校園圈子論壇&#xff0c;交友頻道&#xff0c;商城&#xff0c;二手市場&#xff0c;活動專區&#xff0c;短視頻&#xff0c;從校園生活的方方面面展現出了充滿活力和創造力的鏡頭。這個頻道是一個讓學生們相互交流、結識新朋友的平臺&#xff0c;不僅有交友功能&#xff0c;…

【done+重點】劍指Offer56-I:找出數組中2個只出現1次的整數

力扣&#xff0c;https://leetcode.cn/problems/shu-zu-zhong-shu-zi-chu-xian-de-ci-shu-lcof/description/ 題目&#xff1a;一個整型數組nums里除兩個數字之外&#xff0c;其他數字都出現了兩次。請寫程序找出這兩個只出現一次的數字。要求時間復雜度是O(n)&#xff0c;空間…