小白入门脑电信号

2023-11-01

是个脑电信号研究小白,今年3月下旬临时换了研究方向,到现在也看了不少论文,试过一些特征提取的代码还有分类的代码。现在也想总结一下这段时间所学的东西,算是做个中期回顾吧。

Ps:里面的特征提取的代码以及分类的代码均不是我所写的,后面会附上链接,可以直接去找链接,还有一些工具包,等会上传上去,应该是可以免费拿的,第一次弄,我还没怎么搞清楚。

Pps:这篇主要是汇总一些方法,还有代码链接等等。均适用于Matlab

No.1 脑电信号分析的大致流程

大致流程是:脑电信号采集,预处理,特征提取,特征筛选(我看有的文章并没有这一块,所以主要看自己吧),分类,得出结果进行分析。

 流程这一块大同小异,在脑电信号这一块大部分都是这个流程。

No.2 预处理

预处理这一块我就不做过多的详解了,我接触的不多,只是尝试过使用EMD以及EEMD做噪声剔除。

在预处理这一块,主要是剔除噪声和伪影,伪影包括眼动,肌动,心动等伪影,可以采用一些方法进行剔除,如我前面所讲的EMD和EEMD,还有PCA,ICA,ANOVA等也可以进行剔除,稍后我把EMD和EEMD的工具包上传,应该可以免费获取。

Ps:EEMD是EMD的进化,里面可以尽量避免模态混叠,但是感觉好像两者没啥太大的区别,但也有可能是我研究的这一块看起来没啥太大的区别。

我目前在网上以及文献里看到采用EMD和EEMD进行去噪去伪影的方法是,采用这些方法将原始信号分解成多个imf,随后对分解的imf进行相关性分析,得出相关系数,然后对所有的imf的相关系数求取std,随后将其设置为阈值进行筛选,大于阈值的留下,小于阈值的剔除。最后将筛选出来的imf进行重构(相加)得出一个新的信号,这个新的信号就是剔除噪声和伪影的信号。

附上链接:EEMD算法原理及应用_Zhi Zhao的博客-CSDN博客_eemd算法

No.3 特征提取

特征提取主要分为时域,频域,时频域,非线性动力学等。时域的特征有SSA(奇异值),ERP(事件相关电位)等,频域有PSD等,时频有小波变换,小波包变换等,非线性动力学特征有各种熵,比如模糊熵FuzzyEn,样本熵SaEn,近似熵ApEn,排列熵PEn等等。

附上链接1:非线性动力学特征的代码

关于熵的一个总结_人间不想清醒的博客-CSDN博客_matlab多尺度熵

【熵与特征提取】从近似熵,到样本熵,到模糊熵,再到排列熵,究竟实现了什么?(第一篇)——“近似熵”及其MATLAB实现 - 知乎 (zhihu.com)

附上链接2:PSD的代码

数字信号中功率谱估计相关方法简介及MATLAB实现_cqfdcw的博客-CSDN博客_信号功率谱matlab

Ps: 可以直接用Welch法来计算功率谱密度

No.4 特征筛选

特征筛选就是将求取的特征进行相关性分析,将P<0.05的特征提取出来进行下一步分类的分析。因为统计学上认为P<0.05具有显著性差异,否则没有。相关性分析可以直接调用Matlab的函数corr。调用格式为

[R,p_value] = corr(data,'Type','spearman') %spearman可以替代为pearson或者Kendall,默认类型为pearson型

附上链接:matlab相关性分析(皮尔逊,肯德尔,斯皮尔曼) - 知乎 (zhihu.com)

No.5 分类

分类是我接触脑电信号研究的第一个模块,最先接触的分类器是SVM。目前感觉最好用的SVM是Libsvm,是一个工具包,稍后附上Libsvm下载的官网地址以及如何激活等。

当然分类器还有DT(决策树),RF(随机森林),KNN等。

分类主要分为机器学习和深度学习两大类

分类器
种类 分类器
机器学习 DT(决策树)
RF(随机森林)
SVM(支持向量机)
KNN(K近邻)
LDA(线性判别分析)
深度学习 多层感知机
LSTM(长短期记忆网络)

各种神经网络

(卷积神经网络,循环神经网络等)

分类器就是首先将每个样本打上标签,标签自行定义。

随后将样本随机打乱分为test测试集和train训练集。分类器对训练集进行训练,得出一个模型,然后将test测试集放入到模型里进行测试,得出准确率。

分类一般分为二分类和多分类。二分类可以直接调用Matlab自带的函数。多分类则需要进行一定的更改,当然也可以不更改,比如RF,就可以直接调用Treebagger进行多分类。格式如下

%% all 随机森林模型
a_randomforest = TreeBagger(100, Traindata, Traindata_label,'Method','classification');
[a_randomforest_pred, outcome] = predict(a_randomforest, Testdata); % outcome 是概率输出

% a_randomforest,a_randomforest_pred, Traindata, Traindata_label,Testdata为自行定义的名称,可根据自己喜好进行更改。
% a_randomforest:训练的模型
% a_randomforest_pred:预测的结果
% Traindata:训练的数据
% Traindata_label:训练数据的标签
% Testdata:测试的数据

附上链接:Libsvm的多分类代码示例以及Libsvm安装包如何安装的案例

SVM多分类问题 libsvm在matlab中的应用_lwwangfang的博客-CSDN博客_matlab svm多分类

LIBSVM在Matlab下的使用_xiaopihaierletian的博客-CSDN博客_libsvmread

Over!

先讲这些,后面又找到一些,学习完后,再进行归纳总结。

欢迎提问!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

小白入门脑电信号 的相关文章

  • 如何从绘图处理程序中绘图?

    我有绘图的处理程序或图形的处理程序 例子 h plot 1 0 2 10 xx get h xx DisplayName Annotation 1x1 handle Color 0 0 1 LineStyle LineWidth 0 500
  • MATLAB 图中轴标签与轴之间的距离

    我正在使用 MATLAB 绘制一些数据 我想调整轴标签与轴本身之间的距离 但是 只需向标签的 位置 属性添加一点即可使标签移出图窗窗口 是否有 保证金 属性或类似的东西 在上图中 我想增加数字和标签 Time s 之间的距离 同时自动扩展数
  • 优化 MATLAB 代码(嵌套 for 循环计算相似度矩阵)

    我正在 MATLAB 中基于欧几里德距离计算相似度矩阵 我的代码如下 for i 1 N M N is the size of the matrix x for whose elements I am computing similarit
  • 单元格的 Fieldnames 函数的等效项

    正如标题所说 只是想知道是否有一个函数可以用作字段名 http www mathworks co uk help matlab ref fieldnames html 但适用于单元格 所以如果我有类似的东西 a imread redsqua
  • 如何在Matlab中将世界坐标转换为像素索引

    我有 512x512x313 体积的 dicom 图像 并且我有一个以世界坐标表示的点 57 7475 63 4184 83 1515 我如何在 Matlab 中获得该世界坐标的相应像素坐标 我不想戳破你的幻想 但你所要求的是不可能的 我能
  • 为什么 mex 文件中的 OpenMP 仅产生 1 个线程?

    我是 OpenMP 新手 我有以下代码 使用配置了 MSVS2010 的 Matlab mex 可以正常编译 计算机有 8 个可用处理器 我也使用 matlabpool 检查过 include mex h include
  • 检查图像中是否有太薄的区域

    我正在尝试验证雕刻机的黑白图像 更多的是剪贴画图像 不是照片 我需要考虑的主要事情之一是区域的大小 或线条的宽度 因为机器无法处理太细的线条 所以我需要找到比给定阈值更细的区域 以此图为例 竖琴的琴弦可能太细而无法雕刻 我正在阅读有关 Ma
  • 从筛查乳腺 X 光检查数字数据库 (DDSM) 获取数据

    我正在尝试以可读格式获取 DDSM 数据集 有谁有 DDSM heathusf 程序的工作版本 可以在 Linux 或 Windows 上正常运行吗 我知道 DDSM 的 jpeg 程序有一个适用于 linux 的工作版本 位于http w
  • 将数据提示堆栈放在轴标签顶部,并在轴位置发生更改后更新轴标签

    此问题仅适用于 unix matlab Windows 用户将无法重现该问题 我在尝试创建位于 y 轴标签顶部的数据提示时遇到问题 下图很能说明问题 正如您所看到的 在 ylabel 附近创建的数据提示将到达 ylabel 文本的底部 而期
  • Matlab颜色检测

    我试图一致地检测同一场景的图像之间的某种颜色 这个想法是根据颜色配置文件识别一组对象 因此 例如 如果给我一个带有绿色球的场景 并且我选择绿色作为我的调色板的一部分 我想要一个具有反映它检测到球的矩阵的函数 任何人都可以为这个项目推荐一些
  • 在 Matlab 的命令窗口中获取旧式帮助

    问题的简短版本 在最新版本的 Matlab 中 我在 Windows 上的 R2014b 和 R2015a 中看到过 当您键入help foo你得到一个简要描述 简介函数及其签名 例如 输入help bsxfun产生类似这样的东西 只有更好
  • 在 matlab 代码中使用 dll 文件

    我需要使用 Matlab 中由 dll 文件定义的函数 我有一个例子 那个家伙将 dll 转换为 mexw32 文件 但我知道我是如何做到这一点的 我尝试使用加载库但它没有创建任何文件 我怎样才能做到这一点 loadlibrary http
  • 如何使用Matlab将数据保存到Excel表格中?

    我想将数据以表格形式保存在 Excel 工作表中 它应该看起来像 Name Age R no Gpa Adnan 24 18 3 55 Ahmad 22 12 3 44 Usman 23 22 3 00 每次当我执行我的文件时类数据 m 下
  • 如何在Matlab中打印带有千位分隔符的整数?

    我想使用逗号作为千位分隔符将数字转换为字符串 就像是 x 120501231 21 str sprintf 0 0f x 但随着效果 str 120 501 231 21 如果内置fprintf sprintf做不到 我想可以使用正则表达式
  • for 循环中的绘图没有可见点

    我正在努力解决我想使用 for 循环制作的情节 我知道当我在循环之后添加它时它会起作用 只是一个简单的图 但我想用另一种方式尝试一下 fib ones 1 10 for k 3 10 hold on fib k fib k 1 fib k
  • 以 2 为底的矩阵对数

    Logm 取矩阵对数 并且log2 取矩阵每个元素以 2 为底的对数 我正在尝试计算冯 诺依曼熵 它涉及以 2 为底的矩阵对数 我该怎么做呢 如果将 以 2 为底 的矩阵指数定义为B expm log 2 A 或者如果您类似地通过特征分解直
  • MATLAB - 通过垂直连接子矩阵重新排列矩阵

    我在执行以下任务时遇到问题 假设一个 3x6 矩阵 A 0 2787 0 2948 0 4635 0 8388 0 0627 0 0435 0 6917 0 1185 0 3660 0 1867 0 2383 0 7577 0 6179 0
  • 如何选择面积最大的对象?

    我用过bwconvhull检测图像的某个部分 正如您在图像中看到的那样 有许多具有特定质心的对象 我想做的是检测面积最大的物体 左起第一个大物体 并忽略其他物体 我应该遵循哪种方法 我将非常感谢您的帮助 以下是代码 由于我仍在努力 所以写得
  • 保存符号方程以供以后使用?

    From here http www mathworks com help releases R2011a toolbox symbolic brvfu8o 1 html brvfxem 1 我正在尝试求解这样的符号方程组 syms x y
  • 更新:随机将行添加到矩阵中,但遵循严格的规则

    以下是一个更大的矩阵的一部分 0 1 0000 1 0000 77 0000 100 0000 0 0 2500 0 1 0000 1 0000 72 0000 100 0000 0 2500 0 2500 0 1 0000 1 0000

随机推荐

  • 代价函数

    一 什么是代价函数 我在网上找了很长时间代价函数的定义 但是准确定义并没有 我理解的代价函数就是用于找到最优解的目的函数 这也是代价函数的作用 二 代价函数作用原理 对于回归问题 我们需要求出代价函数来求解最优解 常用的是平方误差代价函数
  • 普通大专真的可以自学 Java 吗?

    能是肯定能 看数据先 全国范围内搜索Java筛选大专学历 1到 3年工作经验 找到了1177条消息 但是其他条件不变 更改本科呢 全国范围内搜索到了3215条招聘消息 有人说什么90 以上都要本科 确实有点片面了 当然现在也不是招聘旺季 已
  • HashMap的底层实现。(05)

    HASHMAP的简介 通过学习本文档后能够掌握到的知识点 1HashMap的简单介绍 2HashMap的主要方法 3模仿JAVA写一个简单的HASHMAP 子曰 学而不思则罔 思而不学则殆 1 为什么学HASHMAP 作为MAP接口下面一个
  • springboot学习(七)Thymeleaf模板引擎

    模板引擎 springboot我们目前是以jar包的形式打包 实际上我们之前是打成war包 放到tomcat服务器里面 可以用JSP 但是jar包就导致不能用JSP 换一种方式就是springboot推荐的Thymeleaf模板引擎 JSP
  • npm 换淘宝源

    npm config get registry npm config set registry https registry npm taobao org
  • cURL安装和常用实例

    cURL是一个利用URL语法在命令行下工作的文件传输工具 配置后 可以在命令行直接执行各类操作 也可以作为源码包 载入到各类后端开发 为后端提供文件传输能力 安装 下载 演示电脑是win10 64位 下载对应的包 全部下载地址 zip地址
  • Hibernate中枚举Enum类型的映射策略

    在Java中Enum是一种 奇葩 的存在 奇葩 不代表没用 对于这种比较特殊的存在 hibernate会有很多种选择来完成Enum类型字段的映射 首先要说明的是在hibernate都是把Enum类型的字段映射成基本类型的字段 并且我这里不使
  • moviepy音视频开发:音频剪辑基类AudioClip详解

    前往老猿Python博文目录 一 背景知识介绍 1 1 声音三要素 音调 人耳对声音高低的感觉称为音调 也叫音频 音调主要与声波的频率有关 声波的频率高 则音调也高 音量 也就是响度 人耳对声音强弱的主观感觉称为响度 响度和声波振动的幅度有
  • AIGC发展路径思考:大模型工具化普及迎来新机遇

    来源 腾讯科技 摘要 当前 AIGC引发社会关注 尤其是大模型和开源模式的推动 让AIGC有望成为AI应用落地的新领域 一方面大模型和开源加速降低AIGC应用门槛并拓展应用范围 另一方面AI与创新的界限进一步模糊 两者融合的趋势愈发明显 本
  • Python 多线程 run() 与 start()的关系

    先说结论 1 调用多线程时用start 2 start 中会调用run 3 run 不会启动多线程 代码分析 1 首先看run 的代码 def run self Method representing the thread s activi
  • 二阶系统参数用matlab,实验一基于MATLAB的二阶系统动态性能分析

    实验一 基于MATLAB 的二阶系统动态性能分析 一 实验目的 1 观察学习二阶控制系统的单位阶跃响应 脉冲响应 2 记录单位阶跃响应曲线 脉冲响应曲线 3 掌握时间响应分析的一般方法 4 掌握系统阶跃响应曲线与传递函数参数的对应关系 二
  • sqoop入门

    大数据技术之Sqoop 一 Sqoop简介 Sqoop是hdfs hive hbase和RDBMS结构化数据库之间传输大量数据的工具 二 Sqoop原理 将导入或导出命令翻译成mapreduce程序来实现 在翻译出的mapreduce中主要
  • Linux常用命令介绍(一)——文件与文件夹操作相关命令

    今天继续给大家介绍Linux相关操作 本文主要内容是文件和文件夹的基本操作 包括创建 复制 删除 以及压缩和解压缩命令 一 创建文件 夹 mkdir命令用于创建文件夹 在使用时 我们常常跟 p参数 表示强制创建 没有该参数 则必须目标文件夹
  • ESP32中定时计数器的使用

    一 GPIO常用函数 esp err t gpio reset pin gpio num tgpio num 将 gpio 重置为默认状态 选择 gpio 功能 启用上拉并禁用输入和输出 备注此功能还将此引脚的 IOMUX 配置为 GPIO
  • shiro标签页点击报错: No SecurityManager accessible to the calling code...

    shiro按钮配置标签报错问题 问题 最近的项目需要将按钮也动态配置进去 我按照网上的步骤加上shiro的taglib标签 然后在该页面的某个按钮上加上
  • vue3项目(八)---购物车

    1 购物车业务逻辑梳理拆解 1 整个购物车的实现分为俩个大分支 本地购物车操作和接口购物车操作 2 由于购物车数据的特殊性 采取Pinia管理购物车列表数据并添加持久化缓存 2 本地购物车 加入购物车实现 1 封装cartStore 在st
  • 正则表达式 匹配6到20位含字母和数字

    A Za z0 9 6 20 分别匹配字符串的开始和结束 d a z A Z a zA Z d 6 20 a z A Z a zA Z d 6 20 d 表示字符串中有数字 a z A Z 则分别表示字符串中含有小写字母和大写字母 例如 a
  • 使用R语言绘制散点图是一种常见的数据可视化方法,可以帮助我们观察和分析数据的分布情况

    使用R语言绘制散点图是一种常见的数据可视化方法 可以帮助我们观察和分析数据的分布情况 在散点图中添加自定义文本标签可以进一步丰富图表的信息内容 本文将介绍如何使用R语言的plot函数和mtext函数来创建散点图并添加自定义文本标签 首先 我
  • 域名解析--详细讲解

    1 域名是什么 比如 www baidu com 这一串东西就是域名 2 那么我们买的域名 直接输入到浏览器的地址栏 访问 却什么都没有 是因为域名形象的说只是一个门牌号而已 所以需要将域名解析到服务器 3 怎么解析 以下以阿里云网站操作为
  • 小白入门脑电信号

    是个脑电信号研究小白 今年3月下旬临时换了研究方向 到现在也看了不少论文 试过一些特征提取的代码还有分类的代码 现在也想总结一下这段时间所学的东西 算是做个中期回顾吧 Ps 里面的特征提取的代码以及分类的代码均不是我所写的 后面会附上链接