如何在EEGLab中提取给定时间的频率?

时间:2017-01-21 13:50:35

标签: matlab eeglab

我是EEGLab的新手,这是一个用于分析EEG数据的MATLAB工具。我想知道是否有一种特定的方法可以在给定时间将EEG波的频率提取到使用MATLAB的文本文件中。

例如:1s 11Hz,         2s 8Hz ....

3 个答案:

答案 0 :(得分:1)

脑电波的范围从0.5 Hz开始的delta波到40 Hz及更高​​(甚至高达100 Hz)的伽马波,你可能会考虑的问题是这些频率始终存在,因为大脑永远不会出现真的"关闭"某些频率。因此,在脑振荡的频率中研究的是某些频率范围的活动和功率的变化。例如,α波在闭眼状态下显示出比睁眼更多的能量。 要解决您的问题,您可以:

  1. 请参阅EEGLAB wiki并按照教程获取样本数据,并了解它可以为您提供的内容。例如,请参阅chapter 03

  2. 最简单的方法是,如果您愿意,请在MATLAB中使用快速傅立叶变换(FFT)在时间间隔内查看EEG信号的功率活动,您需要知道数据采样的时间间隔,称为采样频率 Ts 。如果您有此信息,只需查看Documents on MATLAB fft()或在网络上搜索。

答案 1 :(得分:1)

有两种方法可以从脑电图中提取频率信息: 1)使用基于快速傅里叶变换(FFT)的方法 2)使用基于小波变换(WT)的方法

当然,您可以使用EEGLAB工具箱执行上述分析,但大多数情况下您甚至不需要工具箱来执行此类分析。

例如,如果要在EEG上执行基于FFT的频率分析,可以使用MATLAB中的某些函数,例如pmtm

如果您想执行小波变换,可以使用cwt

文档编写得很好,您只需将数据作为输入提供,并在每个函数中提供适当的参数。

如果您想了解更多有关基础知识的信息,可以随时访问网页上的EEGLAB维基或其他来源。

希望这有帮助!

答案 2 :(得分:1)

根据您的问题,您似乎想要执行某种时间 - 频率分析,这是一种分析,您可以在其中提取一些频率信息,保留时间信息。重要的是,你没有提取频率"从数据(这是一个奇怪的请求),但你提取一些感兴趣的频率的属性(通常是给定频率的能量,表示为" Power")。

通常,在计算EEG数据的一些基本频率属性时(作为EEG的通道光谱(参见here EEGlab教程),您将丢失时间信息。

时间频率分析克服了这一限制,可以获得您想要的信息,即频率能量随时间的变化(参见EEGlab totorial on Time-Frequency)。

运行时频分析需要一些注意力并且可能很棘手(你可以轻易犯几个错误)我建议你检查Mike Cohen的讲座(查看视频教程here)或他的书"分析时间序列数据" (见here)。通过这些资源,您可以完美地了解什么是时频分析,并且还可以了解时频数据如何存储在MATLAB中。

一旦你知道这一点,你就可以转移到导出你的频率数据的实际问题(可以说,你在给定频率上的动力时间)。您可以在EEGLAB邮件列表中查看如何检查此thread

下面我写了一些改编自上面的帖子的代码,你可以作为一个起点

%% first you run a time frequency analysis. 
% Check the help of 'pop_timef' function for further information 
[ersp itc powbase times freqs] = pop_timef( EEG, 1, 1, [-1000 2000] , [3 0.5]  ,'type', ...
'phasecoher', 'topovec', 1, 'elocs', EEG.chanlocs, 'chaninfo', EEG.chaninfo, 'title',...
'Channel FPz power', 'padratio', 1, 'plotphase','off');


% select the ordinal number of the frequency you want to export
% NOTE: this means that you are selecting the 1st frequency (by default settings 6 Hz) 
% and NOT the 1Hz frequency.
my_freq_n = 1
% to check the frequency selected
freqs(my_freq_n)

% my_time specifies the timepoint you want to export
my_time = 1500

% my_ersp stores the ersp value (that is the result of a specific kind of
% Time-Frequency analysis) for your selected time and your selected frequency.
my_ersp = ersp(my_freq_n, dsearchn(times', my_time))

% export the my_ersp object as a .txt file
save -ascii my_ersp.txt my_ersp

`