MATLAB环境下脑电信号EEG的谱分析

news2025/2/24 12:08:38

脑电信号一直伴随着人类的生命,脑电波是脑神经细胞发生新陈代谢、离子交换时细胞群兴奋突触电位总和,脑电信号的节律性则和丘脑相关,含有丰富的大脑活动信息。通常我们所接触的脑电图都是头皮脑电图,在有些特殊场合还需要皮下部位的脑电图,脑电信号主要有以下几个特点:

(1)脑电信号只有50pV左右,所以非常的微弱,通常头皮脑电信号,超过100pV的可以认作是噪声。脑电信号按照波幅值可以分为高、中、低三种:低波幅值小于25pV;中波幅值大于25pV小于50pV;高波幅值大于50pV。

(2)具有随机性及非平稳性。脑电信号被影响的因素很多,但规律通常都没有被识别,通常来说,脑电信号的规律从大量的数据统计、大量的技术处理检测、识别和估计结果中显示,并且生命体对外界的自适应力,以及生理因素的作用都对脑电信号产生了影响,所以脑电信号具有着随机性和非平稳性,并且一直随着时间在变化。

(3)具有非高斯、非线性的特征。生物组织自适应和生理机使得人体脑电的信号有非线性的特性,当前信号处理通常通过线性系统分析基础上进行,所以在分析方法上如何最小地去减小非线性误差在脑电信号的处理上也应该要考虑。

(4)脑电信号容易受到诸多的背景噪声干扰。影响脑电波的因素还有很多。比如人的年龄,当人在50岁以后,慢波又可以逐渐回升,还有着不同程度的基频慢波。脑波还更易受到意识、情绪以及思维状态等因素的影响。

脑电波在病理的状态下的形态也经常会出现一些异常瞬态波。尖波周期范围是在80~200ms,其波形快速上升、缓慢下降,类似于三角波,病症常见于癫痫。棘波多见于局限性的癫痫,而棘慢综合波是通过棘波和慢波所构成的复合波。

鉴于此,本项目采用谱分析方法,对两个来源(PhysioNet数据库和自测数据库)的脑电信号进行了研究,目标是应用不同的时频谱分析技术评估相应的结果。算法程序运行环境为MATLAB R2021b,执行EEG信号的谱分析,也可迁移至金融时间序列,地震信号,机械振动信号,语音信号,声信号等一维时间序列信号。

部分代码如下:

%EEG Signal Spectral Analysis
%Load data & Initialize params
%Sleep dataset
clear;
[x, Fs, Start_date, Start_time, Label, Dimension, Coef, Nmb_chans,N] = readedf_EX1('sc4002e0.rec',0,0,360);
windows = int16([128 256 512]);
overlaps = double([0 0.25 0.50 0.75]);
dft_points = [64 128 256 512 1024];
Signal overview
figure
time = linspace(0,length(x)/Fs, length(x));
plot(time,x)
axis('normal')
title('Sleep EEG')
xlim([0 length(time)/Fs])
xlabel('time (s)')
ylabel('amplitude mV')

1. PSD params experiment

1.1 Window size
figure
hold on
for i=1:length(windows)
    [pxx, f] = pwelch(x,windows(i),overlaps(3)*windows(i),dft_points(i),100);
    plot(f, pow2db(pxx))
end
legend(sprintf('w=%d', windows(1)), ...
    sprintf('w=%d',windows(2)), ...
    sprintf('w=%d', windows(3)))
xlabel('')
title('Variation in window sizes')
xlabel('Frequency (Hz)')
ylabel('Power (dB)')
hold off
% Better visualization for comparision
xlim([7.37 20.53])
ylim([2.30 11.52])

1.2 Overlap
figure
hold on
noverlaps = overlaps .* 128;
for i=1:length(noverlaps)
    [pxx, f] = pwelch(x, windows(1), noverlaps(floor(i)), dft_points(1), 100);
    plot(f, pow2db(pxx),'LineWidth',1)
end
legend(sprintf('overlap=%d %', overlaps(1)*100), ...
        sprintf('overlap=%d %', overlaps(2)*100), ...
        sprintf('overlap=%d %', overlaps(3)*100),...
        sprintf('overlap=%d %', overlaps(4)*100))
xlabel('')
title('Variation in overlaps ')
xlabel('Frequency (Hz)')
ylabel('Power (dB)')
hold off

1.3 Number of DFT points
figure
hold on
for i=1:length(dft_points)
    [pxx, f] = pwelch(x,windows(1),overlaps(2)*windows(1),dft_points(i),100);
    plot(f, pow2db(pxx))
end
legend(sprintf('nfft=%d', dft_points(1)), ...
    sprintf('nfft=%d',dft_points(2)), ...
    sprintf('nfft=%d',dft_points(3)), ...
    sprintf('nfft=%d',dft_points(4)), ...
    sprintf('nfft=%d', dft_points(5)))
xlabel('')
title('Variation in number of DFT points')
xlabel('Frequency (Hz)')
ylabel('Power (dB)')
hold off

2. Spectrogram params experiment

spec_w_1 = 128;
spec_w_2 = 512;
spec_o_1 = 0.5;
spec_o_2 = 0.8;
spec_o_3 = 0.2;
spec_nfft_1 = 128;
spec_nfft_2 = 1024;

2.1 Window size
Small window size results in high detail frequecy representation.
Large window size results in blocky-looking frequecy representation.
figure;
subplot(1,2,1);
spectrogram(x,spec_w_1,64,128,Fs,'yaxis');
set(gca, 'Clim', [-100 45]);
title(sprintf('Window size %d', spec_w_1))

subplot(1,2,2);
spectrogram(x,spec_w_2, spec_o_1 * spec_w_2,128,Fs,'yaxis');
set(gca, 'Clim', [-100 45]);
title(sprintf('Window size %d', spec_w_2))

sgtitle(sprintf('Window size experiment, overlap=%d%%, nfft=%d', spec_o_1*100, spec_nfft_1));

出图如下:

工学博士,担任《Mechanical System and Signal Processing》审稿专家,担任
《中国电机工程学报》优秀审稿专家,《控制与决策》,《系统工程与电子技术》,《电力系统保护与控制》,《宇航学报》等EI期刊审稿专家。

擅长领域:现代信号处理,机器学习,深度学习,数字孪生,时间序列分析,设备缺陷检测、设备异常检测、设备智能故障诊断与健康管理PHM等。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1477912.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

TikTok网络相关问题详解来了,附原生住宅代理IP供应商推荐,

想要迈过TikTok新手门槛,首先必须要学习的就是网络问题。很多人开始做TikTok账号或者TikTok小店时,都会遇到一些先前没有遇到的词汇和概念,比如原生IP,独享IP,甚至专线,那么一个IP可以做几个账号呢&#xf…

0粉低成本带货!职人号矩阵正成为商家的香饽饽

近年来,中国消费市场变化不断,线上消费持续上涨,线上线下一体化成为零售行业的发展新趋势。 加上抖音等平台都在大力发展本地生活,众多连锁商家、本地商家、百货商场纷纷加快数字化转型步伐,掘金线上海量流量&#xff…

机器学习:原理、应用与未来展望

第一章 是什么 机器学习(Machine Learning)是一门跨学科的学科,它使用计算机模拟或实现人类学习行为,通过不断地获取新的知识和技能,重新组织已有的知识结构,从而提高自身的性能。机器学习涉及多个学科&am…

HGAME 2024 WEEK4 WP

文章目录 IOTez7621 MISCezKeyboardMaybezip**Mondrians 🔑 REchange webReverse and Escalation. 想念21和22年的平台和week4的 6557225了 IOT ez7621 拿到固件直接binwalk解,之后grep出hgame 在usr/lib/opkg/info/kmod-flag.control找到这个&#x…

Quartz 任务调度框架源码阅读解析

概念: quartz 是一个基于JAVA的定时任务调度框架 案例: <dependency><groupId>org.quartz-scheduler</groupId><artifactId>quartz</artifactId><version>2.3.0</version></dependency>JobDetail job JobBuilder.newJob(Sc…

TP6上传图片到OSS(记录贴)

1&#xff0c;先安装&#xff0c;我使用composer安装 在项目的根目录运行composer require aliyuncs/oss-sdk-php 2,安装成功以后vendor目录下可以看到如图&#xff1a; 3&#xff0c;上传图片代码如下&#xff1a; <?php namespace app\controller;use app\BaseControll…

宝塔FTP服务设置并结合cpolar内网穿透实现远程传输文件

文章目录 1. Linux安装Cpolar2. 创建FTP公网地址3. 宝塔FTP服务设置4. FTP服务远程连接小结 5. 固定FTP公网地址6. 固定FTP地址连接 宝塔FTP是宝塔面板中的一项功能&#xff0c;用于设置和管理FTP服务。通过宝塔FTP&#xff0c;用户可以创建FTP账号&#xff0c;配置FTP用户权限…

D*算法超详解 (D星算法 / Dynamic A*算法/ Dstar算法)(死循环解决--跟其他资料不一样奥)

所需先验知识&#xff08;没有先验知识可能会有大碍&#xff0c;了解的话会对D*的理解有帮助&#xff09;&#xff1a;A*算法/ Dijkstra算法 何为D*算法 Dijkstra算法是无启发的寻找图中两节点的最短连接路径的算法&#xff0c;A*算法则是在Dijkstra算法的基础上加入了启发函数…

数据抽取平台pydatax介绍--实现和项目使用

数据抽取平台pydatax实现过程中&#xff0c;有2个关键点&#xff1a; 1、是否能在python3中调用执行datax任务&#xff0c;自己测试了一下可以&#xff0c;代码如下&#xff1a; 这个str1就是配置的shell文件 try:result os.popen(str1).read() except Exception as …

吴恩达机器学习全课程笔记第四篇

目录 前言 P61-P68 激活函数 Softmax算法 P69-P73 Adam算法 更多类型的层 模型评估 P74-P79 偏差和方差 建立表现基准 学习曲线 偏差和方差与神经网络 前言 这是吴恩达机器学习笔记的第四篇&#xff0c;第三篇笔记请见&#xff1a; 吴恩达机器学习全课程笔记第…

ubuntu20.04 ROS-Noetic 配置qtcreator的ROS环境

文章目录 1 安装qtcreator1.1 下载安装Qt1.2 配置命令启动qtcreator2 配置ROS2.1 直接安装qtcreator-ros2.2 在qtcreator上安装ros_qtc_plugin插件3 注意3.1 构建套件3.2 更新、删除qt4 参考链接1 安装qtcreator QT官网:Qt Downloads 下载包链接:qt5.12.12 Qt5.12.12默认qtc…

如何系统性的学习推荐系统?

推荐一本适合推荐系统、计算广告、个性化搜索领域的从业人员阅读的书&#xff1a;《互联网大厂推荐算法实战》。快手公司算法专家10余年的实战经验总结。涵盖一线互联网公司当前采用的主流推荐算法&#xff0c;凸显可用性、实用性提供从算法基本原理&#xff0c;到技术框架再到…

0代码自动化测试:RF 框架实现企业级 UI 自动化测试!

RobotFramework框架可以作为公司要做自动化 但是又不会代码的一种临时和紧急情况的替代方案&#xff0c;上手简单。 前言 现在大家去找工作&#xff0c;反馈回来的基本上自动化测试都是刚需&#xff01;没有自动化测试技能&#xff0c;纯手工测试基本没有什么市场。 但是很多人…

qml 项目依赖

文章目录 出现的问题最终对比下一步 把 apptestQml3_6.exe 放到一个单独目录下&#xff0c;执行 windeployqt.exe ./apptestQml3_6.exe但是出了很多问题&#xff0c;根本运行不起来。 但是在release目录下执行下&#xff0c;程序能跑起来。 根据错误提示&#xff0c;进行添加。…

浮点数二分(一个数开根号)

#include<iostream> using namespace std; int main(){double x;cin>>x;double l0,rx;while(r-l>1e-8){double mid(lr)/2;if(mid*mid>x)rmid;else lmid;}cout<<l<<endl;return 0; }

IJCAI 2023 |时空数据(Spatial-Temporal)论文

本次IJCAI 2023共收到4566份投稿&#xff0c;接收率大约15%&#xff0c;本文总结了IJCAI 2023有关时空数据&#xff08;spatial-temporal&#xff09;的论文。 时空数据Topic:轨迹异常检测&#xff0c;时空预测&#xff0c;信控优化等。 目录 Open Anomalous Trajectory Reco…

大学生课程|统计基础与python分析8|员工离职预测模型(免费下载所有课程材料)

此系列为基础学习系列&#xff0c;请自行学习&#xff0c;课程资源免费获取地址&#xff1a; https://download.csdn.net/download/weixin_68126662/88866689 久菜盒子工作室&#xff1a;大数据科学团队/全网可搜索的久菜盒子工作室 我们是&#xff1a;985硕博/美国全奖doctor/…

深度学习500问——Chapter02:机器学习基础(1)

文章目录 前言 2.1 基本概念 2.1.1 大话理解机器学习本质 2.1.2 什么是神经网络 2.1.3 各种常见算法图示 2.1.4 计算图的导数计算 2.1.5 理解局部最优与全局最优 2.1.5 大数据与深度学习之间的关系 2.2 机器学习学习方式 2.2.1 监督学习 2.2.2 非监督式学习 2.2.3 …

Maven【3】( 依赖的范围,传递性和依赖的排除)(命令行操作)

文章目录 【1】依赖的范围结论验证①验证 compile 范围对 main 目录有效②验证test范围对main目录无效③验证test和provided范围不参与服务器部署 【2】依赖的传递性①compile 范围&#xff1a;可以传递②test 或 provided 范围&#xff1a;不能传递 【3】依赖的排除 【1】依赖…

利用python爬取本站的所有博客链接

前因 由于自己要把csdn的博客同步到hugo中&#xff0c;把博客转为md格式已经搞好了&#xff0c;但是由于csdn的图片具有防盗链&#xff0c;所以打算把所有的图片爬取下来&#xff0c;然后保存在本地 刚好本人略懂一些python&#xff0c;所以自己先写了一个脚本用来爬取各个博…