【问题标题】:Splitting EEG Signal into Frequency Bands将 EEG 信号分成频段
【发布时间】:2020-08-29 00:08:21
【问题描述】:
我目前正致力于在 MATLAB 中创建一个程序,该程序将 EEG 信号分成不同的频带以评估癫痫发作。我的问题是,如何在没有滤波器的情况下将 EEG 信号分成不同的频带。例如,delta 波(0-4 Hz)、theta 波(4-7 Hz)等。目前,我所拥有的只是读取 EEG 信号所在的通道,并将信号的 fft 转换为频域。我需要将此信号分成不同的频段进行评估。我[正在考虑可能将 fft 的欧几里德距离用于不同的频率范围,但不确定如何实际实现这一点。任何评论都有帮助。
【问题讨论】:
标签:
matlab
frequency
frequency-analysis
【解决方案1】:
1.如果要将EEG分成不同的频段,可以使用小波方法。通过根据 Fs(数据的频率采样)进行小波分解,您可以通过定义某种级别的小波来获得不同的频带,如 alpha、beta、theta 和 gamma...
2.如果要分析信号中的特定频率(信号中只有一个频率,没有信号频带),可以使用经验模态分解(EMD)方法。
3.您可以使用此语法从 EEG 中提取著名的波段(Alpha、beta、theta...)
p = 带宽(x,fs,freqrange)
示例:p=bandpower(myEEG_channel,512,[0 4]) 在此示例中,我们从 fs=512 Hz 的我的 EEG 信号通道计算 Delta 波段功率。
【解决方案2】:
您想要的可能是时频分析,您可以在其中获得每个时间窗口每个频带的能量。假设您有 40Hz 频率的尖峰。如果在尖峰周围的短时间内计算它们,您只会在 fft 中看到它们,而不是通过对整个信号使用 fft。 Matlab 的spectrogram 可以做到这一点,使用短时傅里叶变换进行时频分析。一旦获得每个时间窗口的傅里叶变换,您就可以在感兴趣的频率上添加或平均绝对信号。但它有一个完整的科学 - 使用哪些小波,每个频率有多少个周期,您可能想要使用FieldTrip(如果您更喜欢脚本)或EEGLab(如果您更喜欢 GUI)指定的 EEG 工具。