<p>你有没有注意到你的“组件”完全是原始信号的比例和颠倒?这是因为你不能得到比信号更多的成分。在</p>
<p>您需要执行以下步骤:</p>
<ol>
<li>将所有EEG通道输入ICA</li>
<li>手动移除包含眨眼或其他伪影的组件</li>
<li>用反变换重构</li>
</ol>
<p>让我们详细了解第2步:<strong>为什么要手动删除组件?</strong>
伊卡对眨眼一无所知。它根据统计测量将信号分成不同的分量。如果幸运的话,这些部件中的一些看起来像是眨眼。在</p>
<p>到目前为止还可以,但真正的问题是没有定义组件的顺序。运行ICA,您可能会发现组件1包含眨眼。再次运行它,它们在组件3中。同样,它们都在第2和第5部分中。。。在</p>
<p>没有办法预先知道要移除哪些组件和多少个组件。这就是为什么每次运行时都需要手动告诉算法。在</p>
<p>在类似这样的代码中:</p>
<pre><code># Use all channels - they will contain eye blinks to varying degrees
X = f1ep1_data[:, :]
# run ICA on signal
ica = FastICA(n_components=x.shape[1]) # we want *all* the components
ica.fit(X)
# decompose signal into components
components = ica.fit_transform(X)
# plot components and ask user which components to remove
# ...
remove_indices = [0, 1, 3] # pretend the user selected components 0, 1, and 3
# "remove" unwanted components by setting them to 0 - simplistic but gets the job done
components[:, remove_indices] = 0
#reconstruct signal
X_restored = ica.inverse_transform(components)
</code></pre>
<p>很可能你对手动步骤不满意。不幸的是:)2013年还没有一个健壮的自动算法来标记眨眼成分。我不认为这已经改变,但如果有什么东西你会发现它是一个领域特定的包,如MNE或PyEEG。在</p>
<hr/>
<p>不过,如果你碰巧有EOG录音,还是有希望的!存在<a href="https://www.ncbi.nlm.nih.gov/pubmed/17088100" rel="nofollow noreferrer"><em>A fully automated correction method of EOG artifacts in EEG recordings</em></a>。这种方法基于典型相关或回归(我不记得细节),但是你需要在脑电图的同时记录EOG信号。在</p>
<hr/>
<p>我用模拟的“脑电图”数据创建了一个工作示例。
数据包括三个通道:额叶、中央和顶叶。10赫兹的阿尔法活动在后面最强,一些眨眼样的尖峰在前面最强。在</p>
<p>希望这个例子能更好地说明如何从多通道数据中删除组件。在</p>
^{pr2}$
<p><a href="https://i.stack.imgur.com/1XzJN.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/1XzJN.png" alt="enter image description here"/></a></p>