MATLAB EEGLAB 脚本(全自动去伪迹版本)

对的 ✅,你的理解很对:重参考(re-referencing)应该放在滤波之前,否则滤波后的相位和幅值可能会受参考选择影响。通常推荐的流程是:

  1. 导入数据
  2. 重参考(例如平均参考、双耳参考或指定电极参考)
  3. 带通滤波(比如 1–40 Hz,去掉低频漂移和高频肌电干扰)
  4. 去眼电/心电伪迹(ICA 或 ASR 自动化方法)
  5. 伪迹标记/剔除坏段坏道(自动或半自动)
  6. 保存清洗后的数据

下面给你一个 MATLAB EEGLAB 脚本(全自动去伪迹版本),你可以直接运行在 EEGLAB 环境里。


% ================================
% 全自动 EEG 数据预处理脚本
% Author: GPT-5
% ================================

% 启动 EEGLAB
[ALLEEG, EEG, CURRENTSET, ALLCOM] = eeglab;

% ========= 1. 导入数据 =========
% 替换文件路径为你的 .vhdr 文件
EEG = pop_loadbv('C:\EEGdata\', 'EEG_0006.vhdr');  
EEG = eeg_checkset(EEG);

% ========= 2. 重参考 =========
% 使用平均参考 (common average reference)
EEG = pop_reref(EEG, []);  
EEG = eeg_checkset(EEG);

% ========= 3. 滤波 =========
% 高通滤波:1 Hz (去漂移)
EEG = pop_eegfiltnew(EEG, 1, []);
% 低通滤波:40 Hz (去肌电噪声)
EEG = pop_eegfiltnew(EEG, [], 40);
EEG = eeg_checkset(EEG);

% ========= 4. 自动伪迹校正 =========
% 使用 CleanRawData (ASR 方法)
EEG = clean_rawdata(EEG, ...
    5, ...   % flatline removal (秒数阈值)
    -1, ...  % channel correlation (自动)
    0.8, ... % 标准差阈值
    4, ...   % 高方差窗口剔除
    20);     % ASR 参数(越大越保守)

% ========= 5. ICA 去伪迹 =========
% 运行 ICA
EEG = pop_runica(EEG, 'extended',1,'interupt','on');
% 自动标签(ICLabel 插件,需要安装)
EEG = pop_iclabel(EEG, 'default');
% 去除眼电、心电、肌电等伪迹分量
EEG = pop_icflag(EEG, [NaN NaN;  % Brain
                       0.8 1;    % Muscle
                       0.8 1;    % Eye
                       0.8 1;    % Heart
                       NaN NaN;  % Line Noise
                       NaN NaN;  % Channel Noise
                       NaN NaN]);% Other
EEG = eeg_checkset(EEG);

% ========= 6. 插值坏道 =========
EEG = eeg_interp(EEG, EEG.etc.clean_channel_mask, 'spherical');

% ========= 7. 保存数据 =========
EEG = pop_saveset(EEG, 'filename','EEG_0006_clean.set','filepath','C:\EEGdata\');

disp('✅ 全自动 EEG 预处理完成!');

📌 思路说明

  • 重参考放在滤波之前 → 避免参考偏置影响滤波结果。
  • 滤波:常用 1–40 Hz(也可以 0.5–45 Hz,取决于实验设计)。
  • ASR (Artifact Subspace Reconstruction) → 自动清理大伪迹和坏道。
  • ICA + ICLabel → 自动识别并剔除眼电、心电、肌电等成分。
  • 插值坏道 → 保留全电极信息,避免空间丢失。

这个流程相当于是 “一键清洗 EEG”,但仍建议人工复核 ICLabel 的结果,以免误删脑信号。


要不要我帮你写一个 半自动版本(会弹出图形界面让你选择保留/删除哪些 ICA 成分),这样可控性更强?


评论

一条对“MATLAB EEGLAB 脚本(全自动去伪迹版本)”的回复

  1. 好。这个能自动去 眨眼睛和 咬牙吗

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注