R中脑电数据的巴特沃斯滤波

时间:2019-04-21 19:57:02

标签: r filtering spectrum neuroscience spectral

我对R和EEG信号很陌生,所以如果问题的答案很明显,请原谅。

我正在尝试对EEG信号执行Butterworth滤波器以提取Alpha频段。当我执行过滤器时,结果信号看起来非常奇怪,完全不符合我的预期,在时间范围开始时出现一个异常大的峰值。我尝试使用eegfilter和bwfilter来查看代码是否存在问题,但是在绘制结果时两者之间几乎没有什么区别。我无所适从地解释了最终结果,如果有人可以向我解释特殊的最终结果,我将不胜感激。

这是我正在查看的数据中的一个示例: https://ufile.io/1ji48wg6

采样率是512。

我想提取阿尔法频段,所以频率在8到12 Hz之间

library(eegkit)

mturk <- read.csv("EEG_alpha.csv", head = TRUE, sep= ",")

mturk.but <- eegfilter(mturk, Fs = 512, lower = 8, upper = 12, method = "butter", order = 4)

plot(mturk.but)

这里是绘制数据时的图像。最左边的图像是原始数据。中心图是使用eegfilter应用Butterworth滤波器的结果。正确的图是使用bwfilter应用Butterworth滤波器的结果。

Plots of data when filters are applied

数据集的标题:

EEG

-8438.876837

-8442.718979

-8441.877183

-8439.974768

-8443.436883

-8448.900711

-8452.433874

-8441.616546

1 个答案:

答案 0 :(得分:0)

似乎eegfilter和bwfilter函数在应用过滤器之前在数据前面添加0,然后对其进行规范化。这样,在处理完数据后,您会在数据的开头得到类似于Dirac的东西,从而使过滤后的数据脱离原始状态:

EEG_raw

对此进行过滤后:

EEG butterworth filetered

但是,如果将数据归一化为0,则为0。在应用过滤器之前,从所有值中减去时间序列的第一个值,不会出现类似Dirac的伪像:

EEG normalised followed by butterworth filter