我是新的科学学习,但我试图消除眼睛眨眼(噪音高峰)在一个单一的脑电图通道。我在互联网上搜索过,但只看到更复杂的读物使用MNE,PyEEG或其他Python模块。我只想要一些简单的,只依赖滑雪的东西。这是我的代码:
#The channel containing some eye-blinks
X = f1ep1_data[:,[4]]
#run ICA on signal
ica = FastICA(n_components=2)
ica.fit(X)
#reconstruct signal with independent components
components = ica.fit_transform(X)
X_restored = ica.inverse_transform(components)
fig1 = plt.figure()
plt.subplot(3,1,1)
plt.title("Original signal")
plt.plot(f1ep1_timescale, X)
plt.subplot(3,1,2)
plt.title("Components")
plt.plot(f1ep1_timescale, components)
plt.subplot(3,1,3)
plt.title("Signal Reconstructed")
plt.plot(f1ep1_timescale, X_restored)
plt.draw()

我所期待的是一个分离的两个组成部分,一个清洁的脑电图信号和眨眼。我搞不懂到底是什么问题。有人能帮忙吗?
发布于 2019-03-13 13:09:14
如果您处理的是单通道EEG,以下可能是一种易于实现的方法:
1)使用简单的基于阈值的峰值检测来检测信号x中的闪烁(您可能需要通过查看信号中的几个眨眼实例来判断它)。来自Neurosky,Muse等的设备带有API来检测眨眼。如果需要的话,你可以使用。
2)取对应于眨眼(xb)的帧。在上面放一条平滑的线(xbs)。
3)从眨眼(xb)中减去平滑线(xbs),并将信号的平均值加到其中。让我们将其称为xbc。
4)用xbc代替原信号x中的xb。
https://stackoverflow.com/questions/53071709
复制相似问题