【脑电信号1】

【脑电信号1】
脑电信号基础入门目录1. 脑电是什么——历史与基本概念2. 脑电信号的生理基础3. 脑电波的五种节律4. 脑电怎么采集——电极与10-20系统5. 诱发电位与事件相关电位6. ERP实验设计要点7. Python简单演示1. 脑电是什么——历史与基本概念1.1 从偶然发现到科学工具1924年德国精神病学家Hans Berger把电极贴在一名颅骨缺损患者的头皮上第一次记录到了人类大脑的电活动。1929年他正式发表了这个发现命名为脑电图EEG。Berger最重要的发现是α波人在闭眼放松时后脑勺附近会出现10Hz左右的规律电活动睁眼后立刻消失。这个现象后来被称为α阻滞至今仍是EEG研究中最经典的现象。1.2 EEG的优缺点优势劣势毫秒级时间分辨率——能跟踪认知过程的实时动态空间分辨率低——难以精确定位脑内源无创、便携、成本远低于fMRI信号微弱微伏级容易受噪声干扰直接测量神经元电活动对皮层下结构不敏感简单记忆EEG 极高的时间分辨率 较差的空间分辨率。适合研究什么时候发生不适合精确定位在哪里发生。2. 脑电信号的生理基础2.1 信号来源EEG记录的不是单个神经元的放电动作电位太快了1ms级别而是大量神经元突触后电位的总和。具体来说是大脑皮层中锥体神经元的兴奋性突触后电位EPSP在头皮表面的远场叠加。为什么是锥体神经元因为它们的排列方式很特殊——像一排排平行的栅栏平行排列 → 电流方向一致 → 信号叠加而非抵消同时被激活数以万计 → 形成的电场足够大到头皮可测顶树突朝皮层表面 → 形成宏观偶极子2.2 丘脑-皮层环路脑电的节律性来自丘脑和皮层之间的振荡电路。简单理解丘脑提供节律源起搏器皮层放大共振抑制性中间神经元调控强度。# 快速感受不同脑电节律importnumpyasnpimportmatplotlib.pyplotasplt fs500tnp.linspace(0,1,fs)freqs{δ(0.5-4Hz):2.5,θ(4-8Hz):6,α(8-13Hz):10,β(13-30Hz):20,γ(30-100Hz):40}fig,axesplt.subplots(5,1,figsize(12,8))forax,(name,freq)inzip(axes,freqs.items()):ax.plot(t,np.sin(2*np.pi*freq*t),linewidth1)ax.set_ylabel(name);ax.set_ylim(-1.5,1.5)ax.set_yticks([]);ax.grid(True,alpha0.3)plt.suptitle(五大频带波形直观对比,fontsize13)plt.tight_layout();plt.show()3. 脑电波的五种节律频带频率(Hz)主要状态一句话δ (Delta)0.5—4深度睡眠、婴儿最慢——“大脑休眠”θ (Theta)4—8冥想、困倦、记忆编码放松和内省——冥想核心频带之一α (Alpha)8—13闭眼放松、冥想最经典——睁眼即抑制“大脑空转”β (Beta)13—30专注、思考、焦虑快节奏——“大脑在干活”γ (Gamma)30—100高级认知、知觉绑定最快——资深冥想者γ显著增强α和θ是与冥想研究关系最密切的两个频带上周那篇论文重点分析的就是这两个。4. 脑电怎么采集——电极与10-20系统4.1 国际10-20系统全球统一的电极放置标准。命名规则很简单字母脑区奇左偶右Z中线。F额叶,C中央,P顶叶,O枕叶,T颞叶,Fp前额极如 F3 左额叶第三个, Pz 顶叶中线10-20指相邻电极间距为头骨总长度的10%或20%。这套标准保证了不同人的电极位置具有可比性。冥想研究最关注前额叶的Fp1/Fp2——覆盖了注意力调控和情绪管理的核心区域。# 10-20系统简图importmatplotlib.patchesasmpatches fig,axplt.subplots(figsize(8,8))headmpatches.Ellipse((0,0.3),1.6,2.0,fillFalse,lw2,colorgray)ax.add_patch(head)elec{Fp1:(-0.20,0.9),Fp2:(0.20,0.9),F3:(-0.28,0.75),Fz:(0,0.78),F4:(0.28,0.75),C3:(-0.36,0.48),Cz:(0,0.50),C4:(0.36,0.48),P3:(-0.30,0.12),Pz:(0,0.15),P4:(0.30,0.12),O1:(-0.18,-0.2),O2:(0.18,-0.2),T7:(-0.70,0.38),T8:(0.70,0.38)}forn,(x,y)inelec.items():credifFpinnelsesteelblueax.scatter(x,y,s100,cc,ecblack,lw1,zorder5)ax.annotate(n,(x,y),fontsize7,hacenter,xytext(0,-10),textcoordsoffset points,colorc)ax.set_aspect(equal);ax.axis(off);ax.set_title(国际10-20系统红色冥想研究重点电极,fontsize12)plt.show()4.2 参考电极EEG记录的是两点间的电位差 活动电极 - 参考电极。参考选在哪直接影响波形。最常用的是乳突参考耳后骨质突起和平均参考所有电极的均值。前者简单稳定后者理论上无偏。4.3 关键参数采样率≥250Hz、电极阻抗5kΩ、陷波滤波去除50Hz工频干扰——这三个是必记项。5. 诱发电位与事件相关电位5.1 概念区分自发脑电是大脑自发的背景活动闭眼休息时的α波就是典型诱发电位/ERP是由外界刺激触发的脑电响应。两者微妙的区别诱发电位(EP)强调由物理刺激诱发潜伏期短事件相关电位(ERP)含义更广包括由决策、运动准备等内源性事件相关的电位变化。实际研究中ERP这个词用得更多。5.2 叠加平均——ERP的核心技术单个trial中ERP信号被埋没在比它强10倍以上的背景噪声中肉眼完全看不到。但ERP有一个关键特点——每次刺激后都会在固定时间出现锁时性而背景噪声是随机的。叠加N次后信号不变噪声衰减为原来的1/√N。叠加100次 → 信噪比提升10倍。这是ERP技术的核心原理简洁但强大。# 快速演示叠加平均fs256;tnp.arange(-200,600,1000/fs)n_trials60erp_true5*np.exp(-((t-300)/60)**2)# 隐藏的P3信号# 模拟多个含噪trialtrialsnp.array([erp_truenp.random.randn(len(t))*10for_inrange(n_trials)])erp_avgtrials.mean(axis0)fig,axesplt.subplots(1,3,figsize(14,4))axes[0].plot(t,trials[0],gray,lw0.5);axes[0].set_title(单次trial看不到信号)axes[1].plot(t,trials[:15].T,lw0.3,alpha0.5);axes[1].set_title(15个trial叠加信号隐约可见)axes[2].plot(t,erp_avg,red,lw2);axes[2].set_title(f{n_trials}次叠加平均信噪比↑{np.sqrt(n_trials):.0f}倍)foraxinaxes:ax.axvline(0,colorblue,ls--,alpha0.3);ax.grid(True,alpha0.3)plt.suptitle(叠加平均原理信号固定 噪声随机 → 叠加后信号浮出水面,fontsize12)plt.tight_layout();plt.show()5.3 常见ERP成分速查成分时间一句话P1~100ms早期视觉注意N1~170ms辨别加工N170~170ms面孔选择性加工——看脸时特别强MMN100-250ms自动检测异常——前注意加工P3/P300250-500ms认知评估和上下文更新——Oddball范式的标志N400300-500ms语义加工——语义不对时N400增大ERN反应后0-100ms犯错检测——做错题时额区出现按极性命名P正波(向下)、N负波(向上)——EEG圈子有个老规矩负波画在上面。6. ERP实验设计要点6.1 Oddball范式出现概率80%的标准刺激中间随机插入20%的偏差刺激。偏差刺激会诱发明显增大的P3——这是ERP研究中最经典的范式。6.2 实验设计要点每条件至少30-50个干净trial、条件间随机呈现、刺激间隔500-2000ms、注意控制伪迹让被试少眨眼。还有就是正式实验前一定做预实验跑2-3个人检查范式有没有bug、参数设置是否合理。这是血泪教训——不做预实验直接收数据大概率出问题。6.3 常见ERP范式范式研究什么Oddball注意、新奇检测Go/NoGo反应抑制Flanker冲突监测N-back工作记忆语义启动语言加工N4007. Python简单演示fromscipyimportsignalfromscipy.signalimportbutter,filtfilt,welch# 生成模拟EEG defmake_eeg(dur4,fs256,alpha_boostTrue):tnp.arange(0,dur,1/fs)eegnp.zeros(len(t))# 五个频带 权重forfreq,win[(2.5,0.3),(6,0.5),(10,2.0ifalpha_boostelse0.3),(20,0.5),(40,0.2)]:eegw*np.sin(2*np.pi*freq*tnp.random.rand()*2*np.pi)eegnp.random.randn(len(t))*2# 噪声returneeg,t# 功率谱分析 eeg_closed,tmake_eeg(alpha_boostTrue)# 闭眼α强eeg_open,_make_eeg(alpha_boostFalse)# 睁眼α弱fig,axesplt.subplots(1,2,figsize(14,5))forax,eeg,titlein[(axes[0],eeg_closed,闭眼α主导),(axes[1],eeg_open,睁眼α抑制)]:freqs,psdwelch(eeg,256,nperseg512)ax.plot(freqs[freqs50],psd[freqs50],b-,lw2)ax.axvspan(8,13,alpha0.12,colorgreen)ax.annotate(α,xy(10.5,0.9*ax.get_ylim()[1]),fontsize14,colorgreen,hacenter)ax.set_title(f{title});ax.set_xlabel(Hz);ax.set_ylabel(功率)plt.suptitle(功率谱闭眼α波明显睁眼α几乎消失,fontsize12)plt.tight_layout();plt.show()# 简单的带通滤波 defbandpass(data,low,high,fs256,order4):nyq0.5*fs b,abutter(order,[low/nyq,high/nyq],btypeband)returnfiltfilt(b,a,data)# 提取α频带eeg_alphabandpass(eeg_closed,8,13)plt.figure(figsize(12,3))plt.plot(t[:500],eeg_closed[:500],gray,lw0.5,alpha0.6,label原始EEG)plt.plot(t[:500],eeg_alpha[:500],green,lw1.5,labelα频带提取后)plt.legend();plt.xlabel(秒);plt.title(带通滤波提取α频带(8-13Hz))plt.grid(True,alpha0.3);plt.tight_layout();plt.show()