过滤特定频率的EEG信号

时间:2017-03-03 03:34:23

标签: matlab filter signals neuroscience

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

提前致谢!

1 个答案:

答案 0 :(得分:1)

首先,在进行任何严肃的分析之前,我会强烈推荐浏览EEGLabFieldtrip或其他一些EEG工具箱的教程。仅仅采用原始EEG信号的频率分量是相当无用的,除非对该组进行了正确的预处理(重新引用,去除伪像等)。另外,通过这些教程将提供您实际想要如何操纵信号的背景。

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

如果您正在进行一次有趣的探索性分析,我提供了一些在频域中操纵/分析EEG信号的示例方法。

原始信号

Raw data

带通滤波器

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

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

eegfilt.m

Bandpass-filtered data

功率谱密度估计(PSD)

直观地,这显示了特定频率范围对信号的平均贡献(即,如果我们具有纯10Hz波,则我们具有在10Hz处具有单个峰的平坦线)。这是量化频域中信号贡献的一种非常好的方法。这个post是如何在神经数据的上下文中解释PSD的极好的总结/背景化。

pwelch(data);

Welch's PSD

时频PSD谱

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

spectrogram(data);

timefreq.m

Time-freq