我有大约 15000 个样本的 EEG 数据。每秒 512 个样本。数据采用数组格式。如果我在 Matlab 中绘制该数据,那么它在 x 轴上具有每秒采样数,在 Y 轴上具有振幅。我想从该数据中提取特定频率范围的数据,例如 8 Hz 到 15 Hz。如何从信号中提取特定的频率范围?
提前致谢!
我有大约 15000 个样本的 EEG 数据。每秒 512 个样本。数据采用数组格式。如果我在 Matlab 中绘制该数据,那么它在 x 轴上具有每秒采样数,在 Y 轴上具有振幅。我想从该数据中提取特定频率范围的数据,例如 8 Hz 到 15 Hz。如何从信号中提取特定的频率范围?
提前致谢!
首先,我强烈建议在进行任何认真分析之前阅读EEGLab、Fieldtrip或其他一些 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);
直观地说,这显示了特定频率范围对信号的平均贡献(即,如果我们有一个纯 10 Hz 波,我们将有一条在 10 Hz 处具有单峰的平坦线)。这是量化频域中信号贡献的一种很好的方法。这篇文章是关于如何在神经数据的上下文中解释 PSD 的出色总结/上下文化。
pwelch(data);
与之前的分析类似,但现在我们正在查看时域和频域上的幅度。
spectrogram(data);