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

【肌电图信号分析】通道肌电图并查找收缩周期的数量、振幅、最大值和持续时间(Matlab代码实现)

 💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

💥1 概述

📚2 运行结果

🎉3 参考文献

🌈4 Matlab代码实现


💥1 概述

该算法接受来自一块肌肉的肌电图信号,并根据用户输入的参数找到收缩期的数量、幅度、最大值和持续时间。输出保存为逗号分隔文本 (csv) 和图像(图 png)。该算法首先使用合成肌电图信号进行测试,然后使用在吃中等强硬食物和睡眠期间记录的咬肌肌的真实肌电图信号。
我们的算法是使用短时快速傅里叶变换的替代方法,以检测咀嚼频率。这是在程序中通过计算每个咀嚼周期周期的倒数获得的。

目前广泛用于苏黎世大学(瑞士)牙科医学中心,用于评估健康受试者和磨牙症咬肌的日常和夜间活动。该脚本还用于同一中心的一项试点研究,以调查佩戴夜间咬合器具对咬肌活动的影响。

要分析肌电图信号并查找收缩周期的数量、振幅、最大值和持续时间,按照以下步骤进行:

1. 采集肌电图信号:使用合适的电极将肌肉的电活动信号采集下来。确保信号采集设备与肌肉相连,并设置适当的采样率和增益。

2. 数据预处理:对采集到的肌电图信号进行预处理。这包括滤波、降噪和放大,以提高信号质量和可分析性。

3. 分析收缩周期数量:通过观察信号波形的周期性特征,可以估计收缩周期的数量。可以使用自相关函数或傅里叶变换等方法来检测信号的周期性。

4. 计算振幅和最大值:通过测量信号的幅值,可以计算振幅和最大值。振幅是信号波形的振幅大小,而最大值是信号中的最大幅值。

5. 计算持续时间:基于收缩周期的识别,可以计算每个收缩周期的持续时间。持续时间是指从一个收缩周期开始到下一个收缩周期开始的时间间隔。

通过上述步骤,你可以对肌电图信号进行分析,并获得收缩周期的数量、振幅、最大值和持续时间。这些分析结果可以用于评估肌肉活动和相关的生理特征。请注意,具体的信号处理和分析方法可能因具体应用而有所不同。

📚2 运行结果

 

 

 

 

 

 

 

 

 

 

部分代码:

% ---------- READ INPUT -----------------------------------------------
  Numeric = dlmread('Input.csv',';', 'b3..b10');
        % input file is of prescribed structure
        % can be opend using MO excel, OpenOffice Calc, or Notepad

    Threshold = Numeric(1,1);   % Threshold for the signal
    TimePause = Numeric(2,1);   % [s], what time devide the activites
    ChannelInfo = Numeric(3,1); % which channel is cosen (1-left,2-right)
    ActDur = Numeric(4,1);      % minimal duration of the activity [s]
    MVC = Numeric(5,1);         % [mV] for maximal voluntary contraction 
    StartTime = Numeric(6,1);   % from when to load the signal [s]
    StopTime = Numeric(7,1);    % when to stop reading the file [s]
    RectDecision = Numeric(8,1);% full-wave rectification (0-no, 1-yes)

% ----------------------------------------------------------------------     
% Pick the experimental wav file file  
 [fileName,expPathname] = uigetfile('*.wav','Pick an experimental file');
 disp('                                                               ')

% -----------------------------
% file informations 
[y, fs, nbits, opts]=wavread2(fileName);
disp('----------- Information about the whole file -------------- ')
fprintf('Information of the sound file "%s":\n', fileName);
TotalDuration  = length(y)/fs;
fprintf('Total duration of the file = %g seconds\n', TotalDuration );
fprintf('Sampling rate = %g samples/second\n', fs);
fprintf('Bit resolution = %g bits/sample\n', nbits);
dt = 1/fs;
disp(['dt =', num2str(dt)]) % disp('7) time between adjacent steps')
tot_samples = length(y); % length of the file
 disp(['Total length of the loaded file is ', num2str(tot_samples )])

 size(y)
 %pause
disp('------------ Aditional informations -----------------------')
opts.fmt
disp('Output')
disp('1) format tag of the wave file')
disp('2) number of channels')
disp('3) number of samples per second (sampling rate)')
disp('4) number of bytes per second')
disp('5) ratio between nAveBytesPerSec and nSamplePerSec')
disp('6) bit resolution')

🎉3 参考文献

部分理论来源于网络,如有侵权请联系删除。

[1]成莹,马元超,陈震宇.运动想象辅助干预对脑卒中肢体功能障碍及肌电图信号的影响[J].检验医学与临床,2023,20(01):112-115.

[2]游淼,邹国栋,林婉华等.基于肌动图与肌电图信号的假肢控制系统的研究[J].北京生物医学工程,2011,30(06):574-577.

[3]罗琦琨,张庆陵,向明等.WIN98环境下肌电图信号高速采样的实现[J].上海生物医学工程,2002(01):49-53.

🌈4 Matlab代码实现

相关文章:

【肌电图信号分析】通道肌电图并查找收缩周期的数量、振幅、最大值和持续时间(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...

python 定时器,如何进行周期性的函数运行、状态检查,百分比计算?

文章大纲 schedulescheschedule线程实现1实现2实现3协程(coroutine)参考文献schedule https://stackoverflow.com/questions/373335/how-do-i-get-a-cron-like-scheduler-in-python https://docs.python.org/3/library/sched.html sche schedule import schedule import ti…...

无涯教程-Perl - fcntl函数

描述 该函数是系统fcntl()函数的Perl版本。使用FILEHANDLE上的SCALAR执行FUNCTION指定的功能。 SCALAR包含函数要使用的值,或者是任何返回信息的位置。 语法 以下是此函数的简单语法- fcntl FILEHANDLE, FUNCTION, SCALAR返回值 该函数返回0,但如果fcntl()的返回值为0,则返…...

docker 命令解析

docker命令解析的文章参考 build 和 commit build适合从头创建一个清晰干净的镜像。 build是从Dockfile产生新的镜像,对于使用者能清晰的知道镜像中包含了哪些内容。commit适合将已有的容器打包提供给其他使用者。 commit是从已经存在的容器产生镜像,这…...

Map集合 实体类对象的相互转换

一、Map转实体类 1. fastjson工具类 导入依赖 <dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.54</version> </dependency>代码实现 Map<String, Object> authorMap n…...

用chatGPT从左右眼图片生成点云数据

左右眼图片 需求 需要将左右眼图像利用视差生成三维点云数据 先问问chatGPT相关知识 进一步问有没有现成的软件 chatGPT提到了OpenCV&#xff0c;我们让chatGPT用OpenCV写一个程序来做这个事情 当然&#xff0c;代码里面会有一些错误&#xff0c;chatGPT写的代码并不会做模…...

dy六神参数记录分析(立秋篇)

version&#xff1a; 23.9 X-SSSTUB: 搜索&#xff1a;x-tt-dt var hashMap Java.use("java.util.HashMap");hashMap.put.implementation function (a, b) {console.log("hashMap.put: ", a, b);return this.put(a, b);}https://codeooo.blog.csdn.n…...

微信-jssdk使用

需求: h5中使用微信的jsSDK,后续实现微信定位以及多图上传 微信文档 申请测试公众号 1.测试公众号进行配置 其中的域名是本地的ip地址 config接口进行权限配置,动态获取JS-SDK权限验证的签名 获取公众号accessToken以及jsTicket public static String WeChatAppId="wx…...

guava-retry使用笔记

guava-retry使用笔记 xml依赖 <dependency><groupId>com.github.rholder</groupId><artifactId>guava-retrying</artifactId><version>2.0.0</version> </dependency>使用案例 重试3次&#xff0c;每次间隔3秒 /*** 重试…...

P1226 【模板】快速幂 | 取余运算

【模板】快速幂 | 取余运算 题目描述 给你三个整数 a , b , p a,b,p a,b,p&#xff0c;求 a b m o d p a^b \bmod p abmodp。 输入格式 输入只有一行三个整数&#xff0c;分别代表 a , b , p a,b,p a,b,p。 输出格式 输出一行一个字符串 a^b mod ps&#xff0c;其中 …...

常用开源的弱口令检查审计工具

常用开源的弱口令检查审计工具 1、SNETCracker 1.1、超级弱口令检查工具 SNETCracker超级弱口令检查工具是一款开源的Windows平台的弱口令安全审计工具&#xff0c;支持批量多线程检查&#xff0c;可快速发现弱密码、弱口令账号&#xff0c;密码支持和用户名结合进行检查&am…...

云监控插件cloudmonitor安装保姆级教程

1、 需要isv把这些域名和ip加入到hosts中&#xff1b; 192.168.31.61 update.aegis.cloud.jiashan.gov.cn&#xff1b; 192.168.31.61 update.aegis.aliyun.com&#xff1b; 192.168.31.61 update2.aegis.cloud.jiashan.gov.cn&#xff1b; 192.168.31.61 update2.aegis.aliyun…...

借用和引用

文章目录 所有权引用和借用可变引用悬垂引用 所有权 Rust通过所有权来管理内存&#xff0c;最妙的是&#xff0c;这种检查只发生在编译期&#xff0c;因此对于程序运行期&#xff0c;不会有任何性能上的损失。 使用堆和栈的性能区别&#xff1a; 写入方面&#xff1a;入栈比在…...

WPF上位机9——Lambda和Linq

Lambda Linq 操作集合 使用类sql形式查询 Linq To SQL...

从0到1搭建uniapp

一、什么是uniapp UniApp是一款基于Vue.js框架的全端开发工具&#xff0c;可以实现同时开发多个平台&#xff08;包括H5、小程序、APP等&#xff09;应用的能力。使用UniApp&#xff0c;开发者只需要编写一份代码就可以快速地发布到多个平台&#xff0c;极大地提高了开发效率和…...

安全杂记 - Linux文本三剑客之awk

目录 1.什么是AWK2.正则表达式3.语法4.内置变量示例printf命令5.复现awk经典实例(1).插入几个新字段(2).格式化空白(3).筛选IPv4地址(4).筛选给定时间范围内的日志 1.什么是AWK awk、grep、sed是linux操作文本的三大利器&#xff0c;合称文本三剑客。三者的功能都是处理文本&a…...

Android 开发者选项日志存储路径

android开发者选项中存在两个item是关于系统日志的。 1.日志记录器缓冲区大小 2.在设备上永久存储日志记录器数据 一个是用来设置缓冲区大小&#xff0c;一个是用来日志存储开关及过滤。 通过分析 system/core/logcat/logcatd.rc mkdir /data/misc/logd 0770 logd log 日志的…...

jupyter lab build失败,提示需要安装版本>=12.0.0的nodejs但其实已从官网安装18.17.0版本 的解决方法

出现的问题如题目所示&#xff0c;这个问题差点要把我搞死了。。。但还是在没有重装的情况下解决了&#x1f618;。 问题来源 初衷是想安装lsp扩展&#xff0c;直接在jupyter lab网页界面的extensions中搜索lsp并点击install krassowski/jupyterlab-lsp&#xff0c;会提示需要…...

【set】个人练习-Leetcode-817. Linked List Components

题目链接&#xff1a;https://leetcode.cn/problems/linked-list-components/description/ 题目大意&#xff1a;给出一个vector<int> nums&#xff0c;其中有一些数字。再给出一个链表的头指针head&#xff0c;链表内的元素各不相同。如果链表中有某一段&#xff08;长…...

Linux IPIP隧道连通两个局域网

拓扑结构 现有两台主机&#xff0c;它们具有两个网口分别接入到不同网络中。 主机A&#xff1a; eth0&#xff1a;处于 10.0.1.2/24 网段eth1&#xff1a; 处于192.168.1.100/24 网段 主机B&#xff1a; eth0&#xff1a;处于10.0.2.3/24 网段eth1&#xff1a; 处于192.168.2…...

stm32G473的flash模式是单bank还是双bank?

今天突然有人stm32G473的flash模式是单bank还是双bank&#xff1f;由于时间太久&#xff0c;我真忘记了。搜搜发现&#xff0c;还真有人和我一样。见下面的链接&#xff1a;https://shequ.stmicroelectronics.cn/forum.php?modviewthread&tid644563 根据STM32G4系列参考手…...

【网络安全产品大调研系列】2. 体验漏洞扫描

前言 2023 年漏洞扫描服务市场规模预计为 3.06&#xff08;十亿美元&#xff09;。漏洞扫描服务市场行业预计将从 2024 年的 3.48&#xff08;十亿美元&#xff09;增长到 2032 年的 9.54&#xff08;十亿美元&#xff09;。预测期内漏洞扫描服务市场 CAGR&#xff08;增长率&…...

如何在看板中有效管理突发紧急任务

在看板中有效管理突发紧急任务需要&#xff1a;设立专门的紧急任务通道、重新调整任务优先级、保持适度的WIP&#xff08;Work-in-Progress&#xff09;弹性、优化任务处理流程、提高团队应对突发情况的敏捷性。其中&#xff0c;设立专门的紧急任务通道尤为重要&#xff0c;这能…...

视觉slam十四讲实践部分记录——ch2、ch3

ch2 一、使用g++编译.cpp为可执行文件并运行(P30) g++ helloSLAM.cpp ./a.out运行 二、使用cmake编译 mkdir build cd build cmake .. makeCMakeCache.txt 文件仍然指向旧的目录。这表明在源代码目录中可能还存在旧的 CMakeCache.txt 文件,或者在构建过程中仍然引用了旧的路…...

springboot整合VUE之在线教育管理系统简介

可以学习到的技能 学会常用技术栈的使用 独立开发项目 学会前端的开发流程 学会后端的开发流程 学会数据库的设计 学会前后端接口调用方式 学会多模块之间的关联 学会数据的处理 适用人群 在校学生&#xff0c;小白用户&#xff0c;想学习知识的 有点基础&#xff0c;想要通过项…...

人机融合智能 | “人智交互”跨学科新领域

本文系统地提出基于“以人为中心AI(HCAI)”理念的人-人工智能交互(人智交互)这一跨学科新领域及框架,定义人智交互领域的理念、基本理论和关键问题、方法、开发流程和参与团队等,阐述提出人智交互新领域的意义。然后,提出人智交互研究的三种新范式取向以及它们的意义。最后,总结…...

uniapp 开发ios, xcode 提交app store connect 和 testflight内测

uniapp 中配置 配置manifest 文档&#xff1a;manifest.json 应用配置 | uni-app官网 hbuilderx中本地打包 下载IOS最新SDK 开发环境 | uni小程序SDK hbulderx 版本号&#xff1a;4.66 对应的sdk版本 4.66 两者必须一致 本地打包的资源导入到SDK 导入资源 | uni小程序SDK …...

tauri项目,如何在rust端读取电脑环境变量

如果想在前端通过调用来获取环境变量的值&#xff0c;可以通过标准的依赖&#xff1a; std::env::var(name).ok() 想在前端通过调用来获取&#xff0c;可以写一个command函数&#xff1a; #[tauri::command] pub fn get_env_var(name: String) -> Result<String, Stri…...

书籍“之“字形打印矩阵(8)0609

题目 给定一个矩阵matrix&#xff0c;按照"之"字形的方式打印这个矩阵&#xff0c;例如&#xff1a; 1 2 3 4 5 6 7 8 9 10 11 12 ”之“字形打印的结果为&#xff1a;1&#xff0c;…...

一些实用的chrome扩展0x01

简介 浏览器扩展程序有助于自动化任务、查找隐藏的漏洞、隐藏自身痕迹。以下列出了一些必备扩展程序&#xff0c;无论是测试应用程序、搜寻漏洞还是收集情报&#xff0c;它们都能提升工作流程。 FoxyProxy 代理管理工具&#xff0c;此扩展简化了使用代理&#xff08;如 Burp…...