0

我有大约 15000 个样本的 EEG 数据。每秒 512 个样本。数据采用数组格式。如果我在 Matlab 中绘制该数据,那么它在 x 轴上具有每秒采样数,在 Y 轴上具有振幅。我想从该数据中提取特定频率范围的数据,例如 8 Hz 到 15 Hz。如何从信号中提取特定的频率范围?

提前致谢!

4

1 回答 1

1

首先,我强烈建议在进行任何认真分析之前阅读EEGLabFieldtrip或其他一些 EEG 工具箱的教程。除非正确地对集合进行预处理(重新引用、去除伪影等),否则仅获取原始 EEG 信号的频率分量是没有用的。此外,通过这些教程将为您实际想要如何操作信号提供上下文。

例如,“提取特定频率范围的数据”可能是对您实际希望从数据中收集的内容的错误表述。浏览其中一个链接教程将向您展示您想要执行的分析,并为您提供可访问的高级工具(即您不必为 EEG 数据定制通用 MATLAB 函数)。

如果您只是为了好玩/探索性分析,我提供了一些示例方法,用于在频域中操作/分析 EEG 信号。

原始信号

原始数据

带通滤波器

在此分析中,您基本上消除了对低于低频阈值和高于高频阈值的信号的任何贡献。

d = fdesign.bandpass(...) % set inputs that are appropriate to your data
myFilt = design(d,'butter');
new_data = filter(myFilt,data);

eegfilt.m

带通滤波数据

功率谱密度估计 (PSD)

直观地说,这显示了特定频率范围对信号的平均贡献(即,如果我们有一个纯 10 Hz 波,我们将有一条在 10 Hz 处具有单峰的平坦线)。这是量化频域中信号贡献的一种很好的方法。这篇文章是关于如何在神经数据的上下文中解释 PSD 的出色总结/上下文化。

pwelch(data);

韦尔奇的 PSD

时频PSD频谱

与之前的分析类似,但现在我们正在查看时域和频域上的幅度。

spectrogram(data);

timefreq.m

时频

于 2017-03-06T19:04:01.680 回答