发布时间:2026/8/2 3:13:38
脑电信号4 脑电信号4目录1. 盲源分离——从鸡尾酒会问题说起2. ICA的数学原理3. ICA在脑电中的实战应用4. EEG微状态——大脑的基本字母5. 微状态分析流程6. Python完整实战1. 盲源分离——从鸡尾酒会问题说起BSS盲源分离就是仅从混合录音中分离各自的声音不知道混合比例也不知道源信号长什么样。脑电跟BSS一样头皮64个电极录到的是脑内多个源的混合。BSS帮我们把它们拆开。importnumpyasnpimportmatplotlib.pyplotaspltfromscipyimportsignalfromsklearn.decompositionimportFastICA# 直观演示两个源→混合→ICA还原np.random.seed(42)tnp.linspace(0,2,500)s1np.sin(2*np.pi*2*t)# 源1慢正弦模拟脑电s2signal.sawtooth(2*np.pi*8*t)# 源2快锯齿模拟眼电x10.8*s10.5*s2# 电极1混合x20.3*s10.9*s2# 电极2混合Xnp.c_[x1,x2]icaFastICA(n_components2,random_state42,max_iter1000)S_hatica.fit_transform(X)fig,axesplt.subplots(2,2,figsize(14,6))axes[0,0].plot(t,s1,b,lw1.5);axes[0,0].plot(t,s2,r,lw1.5)axes[0,0].set_title(真实信号源);axes[0,0].legend([脑电,眼电])axes[0,1].plot(t,x1,gray,lw0.8);axes[0,1].plot(t,x2,k,lw0.8)axes[0,1].set_title(头皮电极录到的混合信号);axes[0,1].legend([电极1,电极2])axes[1,0].plot(t,S_hat[:,0],b,lw1.5);axes[1,0].plot(t,S_hat[:,1],r,lw1.5)axes[1,0].set_title(ICA还原的独立成分)axes[1,1].imshow(ica.mixing_,cmapRdBu_r,aspectauto)axes[1,1].set_title(混合矩阵A);axes[1,1].set_xticks([0,1]);axes[1,1].set_yticks([0,1])plt.suptitle(ICA盲源分离仅从头皮混合信号还原出独立源,fontsize13)plt.tight_layout();plt.show()ICA vs PCA——很多人混淆这两个PCAICA目标找方差最大的方向找统计独立的方向假设信号服从高斯分布信号非高斯输出成分之间不相关正交成分之间统计独立更强2. ICA的数学原理ICA模型X A·S。已知X头皮EEG求W≈A⁻¹得 Ŝ W·X。核心假设源信号是非高斯的。为什么中心极限定理——多个独立非高斯信号的混合比单个信号更像高斯分布。ICA做的就是找到让输出最不像高斯分布的分离方向——“非高斯性≈独立性”。用负熵量化非高斯性J(y) H(y_gauss) − H(y)。高斯分布熵最大负熵越大→越不像高斯→越可能是独立源。FastICA通过最大化负熵迭代求解W。defdemo_ica_geometry():直观感受ICA的几何意义np.random.seed(0)s1np.random.uniform(-1,1,1000)# 两个独立均匀源s2np.random.uniform(-1,1,1000)Xnp.array([[0.7,0.5],[0.3,0.8]]) np.vstack([s1,s2])S_hatFastICA(n_components2,random_state42).fit_transform(X.T).T fig,axesplt.subplots(1,3,figsize(15,4.5))axes[0].scatter(s1,s2,s3,alpha0.5)axes[0].set_title(源信号正方形独立);axes[0].set_aspect(equal)axes[1].scatter(X[0],X[1],s3,alpha0.5,cred)axes[1].set_title(混合后菱形相关);axes[1].set_aspect(equal)axes[2].scatter(S_hat[0],S_hat[1],s3,alpha0.5,cgreen)axes[2].set_title(ICA还原恢复正方形);axes[2].set_aspect(equal)plt.suptitle(ICA几何直觉混合旋转拉伸→ICA解旋还原,fontsize13)plt.tight_layout();plt.show()demo_ica_geometry()3. ICA在脑电中的实战应用3.1 三大去伪迹场景伪迹类型ICA识别依据关键特征眼电(EOG)前额通道权重高 低频功率大波形呈尖峰、峰度5肌电(EMG)高频功率大(30Hz)颞区权重高、不规则心电(ECG)规律尖峰(~1Hz)空间分布广泛3.2 自动分类成分defclassify_ica_components(ica,raw_eeg,fs256):自动分类ICA成分眼电/肌电/心电/脑电n_compica.mixing_.shape[1]sourcesica.transform(raw_eeg.T).T mixingica.mixing_ labels[]foriinrange(n_comp):frontal_wnp.abs(mixing[:3,i]).mean()/(np.abs(mixing[:,i]).mean()1e-10)f,psdsignal.welch(sources[i],fs,npersegfs*2)totalnp.trapz(psd,f)1e-10low_rnp.trapz(psd[(f0.5)(f4)],f[(f0.5)(f4)])/total high_rnp.trapz(psd[(f30)(f50)],f[(f30)(f50)])/total kurtnp.mean((sources[i]-sources[i].mean())**4)/(np.std(sources[i])**41e-10)iffrontal_w1.5andlow_r0.3andkurt5:labels.append(眼电)elifhigh_r0.3:labels.append(肌电)elif0.05low_r0.4andkurt4:labels.append(心电)else:labels.append(脑电)returnlabels使用ICA的注意事项先做1Hz高通滤波再做ICA——低频漂移会让分解不稳定成分数≤通道数数据越长ICA越稳定自动标记后建议人工复查——误删脑电成分比漏删伪迹更糟糕去坏段后再ICA——运动伪迹会污染所有成分4. EEG微状态——大脑的基本字母4.1 什么是微状态观察EEG的多通道地形图你会发现头皮电位不是随机变化的——它在几种固定空间模式之间快速切换每种模式持续约60-120ms。这些准稳态的地形图就是微状态Microstate。打个比方微状态像字母大脑用有限的字母约4种的不同排列组合来表达不同认知状态。4.2 经典四类微状态微状态地形图特征功能关联A类左枕→右额梯度听觉/语言网络B类右枕→左额梯度视觉网络C类额-枕对称中线突显网络——自我参照、冥想相关D类中央-额叶分布注意网络——任务正相关4.3 四个关键时间参数参数含义冥想中的变化持续时间平均持续多少ms冥想相关微状态持续时间↑覆盖率占总时间百分比冥想相关微状态占比↑出现频率每秒出现次数切换频率↓→大脑更稳定转移概率从A切换到B的概率某些转移路径概率改变有研究发现资深冥想者的C类微状态覆盖率显著高于普通人且切换频率更低——大脑更倾向于稳定地保持在自我参照状态。5. 微状态分析流程5.1 四步走预处理EEG → 计算GFP → 取GFP峰值处地形图 → K-means聚类(4类) → 回标到原始EEG取GFP峰值处的原因GFP峰值处信噪比最高、地形图最稳定。谷值处地形图不可靠。deffind_gfp_peaks(eeg_multi,fs256,min_dist_ms50):找到GFP峰值时刻gfpnp.std(eeg_multi,axis0)peakssignal.find_peaks(gfp,distanceint(min_dist_ms/1000*fs))[0]returnpeaks,gfpdefextract_microstates(eeg_data,n_states4,n_peaks500,fs256):从EEG提取微状态GFP峰值→聚类→回标# 1. 找GFP峰值处的地形图peaks,gfpfind_gfp_peaks(eeg_data,fs)top_idxpeaks[np.argsort(gfp[peaks])[-n_peaks:]]toposeeg_data[:,top_idx].T# 2. K-means聚类fromsklearn.clusterimportKMeans kmeansKMeans(n_clustersn_states,random_state42,n_init10)kmeans.fit(topos)# 3. 回标每个时间点分配给最近聚类中心eeg_teeg_data.T distsnp.array([np.sum((eeg_t-c)**2,axis1)forcinkmeans.cluster_centers_])seqnp.argmin(dists,axis0)returnseq,kmeans.cluster_centers_defmicrostate_params(seq,fs256,min_dur_ms30):计算微状态时间参数min_sint(min_dur_ms/1000*fs)params{}forsinnp.unique(seq):is_s(seqs).astype(int)edgesnp.diff(np.concatenate([[0],is_s,[0]]))startsnp.where(edges1)[0]endsnp.where(edges-1)[0]durs(ends-starts)/fs*1000validdursmin_s params[fMS{s}]{平均持续(ms):np.mean(durs[valid]),覆盖率(%):is_s.sum()/len(seq)*100,频率(次/s):len(starts[valid])/(len(seq)/fs),}returnparams6. Python完整实战classEEGBSSAnalyzer:ICA去伪迹 微状态分析def__init__(self,fs256):self.fsfs;self.icaNonedefrun_ica(self,eeg):n_cheeg.shape[0]self.icaFastICA(n_componentsn_ch,random_state42,max_iter2000)sourcesself.ica.fit_transform(eeg.T).Treturnsources,self.ica.mixing_defremove_artifacts(self,eeg,artifact_idx):sourcesself.ica.transform(eeg.T).T sources[artifact_idx]0returnself.ica.mixing_ sources# 完整演示 fs,dur256,10tnp.arange(0,dur,1/fs);nlen(t);n_ch8np.random.seed(42)# 生成模拟多通道EEGeegnp.array([(10-ch*0.8)*np.sin(2*np.pi*10*tch*0.3)(5ch*0.3)*np.sin(2*np.pi*20*tch*0.5)np.random.randn(n)*3forchinrange(n_ch)])# 加眼电前额通道强forbtin[2.5,5.0,7.5]:blink100*np.exp(-((t-bt)/0.1)**2)forchinrange(n_ch):eeg[ch]blink*(1.5-0.18*ch)# 1. ICA去眼电analyzerEEGBSSAnalyzer(fs)sources,mixinganalyzer.run_ica(eeg)artifact_idxnp.argmax(np.abs(mixing[:2]).mean(axis0))# 前额权重最高的成分eeg_cleananalyzer.remove_artifacts(eeg,[artifact_idx])# 2. 微状态分析seq,centersextract_microstates(eeg_clean,n_states4,fsfs)paramsmicrostate_params(seq,fs)# 可视化fig,axesplt.subplots(2,2,figsize(14,8))# ICA前后对比axes[0,0].plot(t,eeg[0],gray,lw0.5,alpha0.7,label含眼电)axes[0,0].plot(t,eeg_clean[0],blue,lw1,label去眼电后)axes[0,0].set_title(f通道0(Fp1) ICA前后对比);axes[0,0].legend();axes[0,0].grid(True,alpha0.3)# 混合矩阵imaxes[0,1].imshow(mixing,aspectauto,cmapRdBu_r)axes[0,1].set_title(f混合矩阵(成分{artifact_idx}眼电))axes[0,1].axvline(artifact_idx,colorred,lw2)plt.colorbar(im,axaxes[0,1])# 微状态覆盖率nameslist(params.keys())axes[1,0].bar(names,[params[k][覆盖率(%)]forkinnames],color[red,blue,green,orange],edgecolorblack)axes[1,0].set_title(四类微状态覆盖率);axes[1,0].set_ylabel(%)# 微状态时序segseq[500:900]colors[red,blue,green,orange]axes[1,1].fill_between(range(len(seg)),seg-0.4,seg0.4,color[colors[int(s)]forsinseg],alpha0.5)axes[1,1].plot(seg,black,lw0.5)axes[1,1].set_title(微状态时序~1.6秒片段);axes[1,1].set_ylabel(状态)axes[1,1].set_ylim(-0.5,3.5);axes[1,1].set_yticks([0,1,2,3])plt.suptitle(ICA去眼电 微状态聚类 完整演示,fontsize14)plt.tight_layout();plt.show()print(\n微状态时间参数:)forkinsorted(params.keys()):pparams[k]print(f{k}: 持续{p[平均持续(ms)]:.0f}ms, 覆盖{p[覆盖率(%)]:.1f}%, 频率{p[频率(次/s)]:.2f}次/s)关键发现ICA能有效分离眼电成分前额高权重低频尖峰特征明显EEG微状态通常聚类为4类其中C类与自我参照/冥想状态密切相关微状态时间参数比传统频谱指标更稳定——是个体脑指纹的候选去伪迹后脑电成分保留完好重构信号波形自然无失真

相关新闻

2026/8/2 3:08:38

基于SpringBoot的农村客运服务系统微信小程序(源码+LW+部署讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/2 3:08:38

Qwen 3.8 Max本地部署指南:从环境配置到API集成实战

这次我们来看一个重量级的开源大模型更新:Qwen 3.8 Max。它不是简单的版本迭代,而是通义千问团队推出的一个全新、功能更强大的免费版本。对于关心本地部署、API调用和实际应用效果的开发者来说,这次更新意味着什么?它真的像标题说…

2026/8/2 3:08:38

EF Core规范模式实战:重构臃肿数据访问层,实现查询逻辑复用

在实际 .NET 项目中,随着业务逻辑的膨胀,数据访问层(DAL)的代码往往会变得臃肿不堪。一个典型的Repository类可能充斥着数十个根据特定业务场景定制的查询方法,这些方法内部又包含了复杂的Where、Include、OrderBy等 L…

2026/8/2 4:33:42

逆向工程入门:从CrackMe实战解析软件保护与破解

1. 项目概述:从CrackMe开始的逆向工程实战如果你对软件底层运行机制、程序保护与破解之间的攻防博弈感兴趣,那么“逆向工程”绝对是一个充满魅力的领域。而“CrackMe”程序,正是踏入这个领域最经典、最实用的敲门砖。它们通常是一些小程序&am…

2026/8/2 4:33:42

Git 常用命令完整手册

摘要:本文是一份全面的 Git 命令速查手册,旨在帮助开发者快速掌握日常开发、团队协作与版本控制中的核心操作。内容涵盖从基础操作(初始化、提交、状态查看)、分支管理(创建、切换、合并)、远程协作&#x…

2026/8/2 4:33:42

[BJDCTF2020]Easy MD5-学习笔记

前置知识1、PHP 松散比较( vs )2、 0e 绕过?正文一、代码审计md5函数知识点讲解二、构造请求参数三、PHP 松散比较()四、构造数组实现MD5 绕过五、PHP 严格比较()1、为什么 0e 绕过在这里失效&a…

2026/8/2 4:33:42

去AI痕迹怎么操作?2026年论文AI率从70%降到8%的实测记录

「您的论文AIGC疑似度70%」——看到这个结果,很多人的第一反应是逐句手动改。改到凌晨三点,复查还有45%,崩溃。2026年各高校和期刊的AIGC检测越来越严,「去AI痕迹」成了论文收尾的刚需环节。我记录了自己把AI率从70%降到8%的全过程…

2026/8/2 0:02:18

如何用免费工具突破游戏窗口限制:SRWE完整使用指南

如何用免费工具突破游戏窗口限制:SRWE完整使用指南 【免费下载链接】SRWE Simple Runtime Window Editor 项目地址: https://gitcode.com/gh_mirrors/sr/SRWE 你是否遇到过这样的困扰?想为心爱的游戏截图,却发现游戏不支持自定义分辨率…

2026/8/2 0:02:18

如何用免费工具突破游戏窗口限制:SRWE完整使用指南

如何用免费工具突破游戏窗口限制:SRWE完整使用指南 【免费下载链接】SRWE Simple Runtime Window Editor 项目地址: https://gitcode.com/gh_mirrors/sr/SRWE 你是否遇到过这样的困扰?想为心爱的游戏截图,却发现游戏不支持自定义分辨率…

2026/8/2 1:52:02

实测才敢推 AI论文网站 2026最新测评与推荐

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。一、综…

2026/8/1 0:03:49

2026必备!AI论文网站测评:最新推荐与深度对比

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

2026/8/1 0:03:49

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…