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

2024-02-29 19:36

本文主要是介绍MATLAB环境下脑电信号EEG的谱分析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

(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 experiment1.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 off1.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 off2. Spectrogram params experimentspec_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等。

这篇关于MATLAB环境下脑电信号EEG的谱分析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/759845

相关文章

python常见环境管理工具超全解析

《python常见环境管理工具超全解析》在Python开发中,管理多个项目及其依赖项通常是一个挑战,下面:本文主要介绍python常见环境管理工具的相关资料,文中通过代码介绍的非常详细,需要的朋友... 目录1. conda2. pip3. uvuv 工具自动创建和管理环境的特点4. setup.py5.

Python中使用uv创建环境及原理举例详解

《Python中使用uv创建环境及原理举例详解》uv是Astral团队开发的高性能Python工具,整合包管理、虚拟环境、Python版本控制等功能,:本文主要介绍Python中使用uv创建环境及... 目录一、uv工具简介核心特点:二、安装uv1. 通过pip安装2. 通过脚本安装验证安装:配置镜像源(可

python获取cmd环境变量值的实现代码

《python获取cmd环境变量值的实现代码》:本文主要介绍在Python中获取命令行(cmd)环境变量的值,可以使用标准库中的os模块,需要的朋友可以参考下... 前言全局说明在执行py过程中,总要使用到系统环境变量一、说明1.1 环境:Windows 11 家庭版 24H2 26100.4061

pytest+allure环境搭建+自动化实践过程

《pytest+allure环境搭建+自动化实践过程》:本文主要介绍pytest+allure环境搭建+自动化实践过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、pytest下载安装1.1、安装pytest1.2、检测是否安装成功二、allure下载安装2.

VS配置好Qt环境之后但无法打开ui界面的问题解决

《VS配置好Qt环境之后但无法打开ui界面的问题解决》本文主要介绍了VS配置好Qt环境之后但无法打开ui界面的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 目UKeLvb录找到Qt安装目录中designer.UKeLvBexe的路径找到vs中的解决方案资源

SpringBoot实现多环境配置文件切换

《SpringBoot实现多环境配置文件切换》这篇文章主要为大家详细介绍了如何使用SpringBoot实现多环境配置文件切换功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 示例代码结构2. pom文件3. application文件4. application-dev文

Web技术与Nginx网站环境部署教程

《Web技术与Nginx网站环境部署教程》:本文主要介绍Web技术与Nginx网站环境部署教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、Web基础1.域名系统DNS2.Hosts文件3.DNS4.域名注册二.网页与html1.网页概述2.HTML概述3.

Ubuntu上手动安装Go环境并解决“可执行文件格式错误”问题

《Ubuntu上手动安装Go环境并解决“可执行文件格式错误”问题》:本文主要介绍Ubuntu上手动安装Go环境并解决“可执行文件格式错误”问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未... 目录一、前言二、系统架构检测三、卸载旧版 Go四、下载并安装正确版本五、配置环境变量六、验证安装七、常见

Gradle下如何搭建SpringCloud分布式环境

《Gradle下如何搭建SpringCloud分布式环境》:本文主要介绍Gradle下如何搭建SpringCloud分布式环境问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录Gradle下搭建SpringCloud分布式环境1.idea配置好gradle2.创建一个空的gr

Android开发环境配置避坑指南

《Android开发环境配置避坑指南》本文主要介绍了Android开发环境配置过程中遇到的问题及解决方案,包括VPN注意事项、工具版本统一、Gerrit邮箱配置、Git拉取和提交代码、MergevsR... 目录网络环境:VPN 注意事项工具版本统一:android Studio & JDKGerrit的邮