我对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
答案 0 :(得分:0)
似乎eegfilter和bwfilter函数在应用过滤器之前在数据前面添加0,然后对其进行规范化。这样,在处理完数据后,您会在数据的开头得到类似于Dirac的东西,从而使过滤后的数据脱离原始状态:
对此进行过滤后:
但是,如果将数据归一化为0,则为0。在应用过滤器之前,从所有值中减去时间序列的第一个值,不会出现类似Dirac的伪像: