第 4 层 · 伪迹剔除层 · 第 15 步 / 共 25 步

步骤 15:SSP 投影(心电)

计算 ECG 投影向量

🕐 20 分钟🎯 难度:进阶🔗 核心 API:compute_proj_ecg⬅️ 前置:步骤 14

1. 目标

基于 ECG 通道构建心电 SSP 投影,去除心跳引起的伪迹(电极下方血管搏动、颈部肌电等)。与步骤 14 的 EOG 投影原理完全一致,仅目标伪迹不同。

2. 何时使用 / 何时跳过

  • 应当使用:数据中存在 ecg 通道、且 ECG 伪迹明显时
  • 可跳过:研究只关心短时间窗口(< 1 秒),ECG 投影意义不大

3. 前置条件

  • 已执行步骤 14:EOG 投影已构建并加入 raw.info['projs']
  • 数据中存在至少 1 个 ecg 类型通道

4. 核心代码

Python
import mne

# ====== 方式 A:自动构建 ECG SSP ======
# 真实默认 l_freq=1.0, h_freq=35.0(不是 8-30)
# 真实 ch_name=None(不是 'auto')
projs_ecg, events_ecg = mne.preprocessing.compute_proj_ecg(
    raw,
    n_eeg=2,             # 默认 2
    ch_name=None,        # 自动选 ecg 通道
    reject=None,
    ecg_l_freq=5.0,      # ECG 检测专用的低/高切
    ecg_h_freq=35.0,
    qrs_threshold='auto',
)
print(f"构建的 ECG 投影: {projs_ecg}")
print(f"检测到的心跳事件: {len(events_ecg)}")

# 加入到 raw.info['projs']
raw.add_proj(projs_ecg)

# ====== 方式 B:显式指定心电通道 ======
projs_ecg, events_ecg = mne.preprocessing.compute_proj_ecg(
    raw,
    n_eeg=1,
    ch_name='ECG001',
    qrs_threshold='auto',
)
raw.add_proj(projs_ecg)

5. 参数详解

参数 含义 推荐值
n_eeg EEG 投影维度 2(默认)
ch_name ECG 通道 None(自动)/ 'ECG001'
ecg_l_freq / ecg_h_freq ECG 检测频段 5.0 / 35.0 Hz(真实默认,不是 8–30)
qrs_threshold R 波检测阈值 'auto'(推荐)
reject 自动拒绝阈值 默认 dict(eeg=5e-5)
tstart 起始时间(秒) 0

6. 验证方法

Python
# 验证 1:投影已添加
print(f"总投影数(含 EOG + ECG): {len(raw.info['projs'])}")
assert any('ecg' in p['desc'].lower() for p in raw.info['projs']), "未添加 ECG 投影"

# 验证 2:检测到的事件
print(f"心电事件数: {len(events_ecg)}")
# 期望:每分钟 60-100 次(健康成人静息态)

# 验证 3:可视化心跳平均
# 后续可结合 epochs 创建心跳触发的 ERP

# 验证 4:检查 R 波检出率
duration_min = (raw.times[-1] - 0) / 60
bpm = len(events_ecg) / duration_min
print(f"平均心率: {bpm:.0f} BPM")
# 期望:50-100 BPM

7. 常见错误

错误 原因 解决方案
RuntimeError: No ECG channels found 未执行步骤 03 立即回到步骤 03
检测到的 QRS 数过少 ECG 信号质量差 提高 l_freq、h_freq 调整滤波
检测到的 QRS 数过多 R 波阈值过松 提高 qrs_threshold
ECG 投影后脑电数据"看起来没变化" ECG 伪迹本身就不严重 跳过本步骤,直接用 ICA 即可
与 ICA 互相干扰 ICA 在已施加 SSP 时拟合 ICA 应在"未施加但已记录 SSP"时拟合(见步骤 16)

8. 官方来源

资源类型 链接
compute_proj_ecg https://mne.tools/stable/generated/mne.preprocessing.compute_proj_ecg.html
SSP 教程 https://mne.tools/stable/auto_tutorials/preprocessing/plot_50_artifact_correction_ssp.html

9. 学术引用

Dirlich, G., et al. (1997). Cardiac field effects on the EEG. Electroencephalography and Clinical Neurophysiology, 103(4), 450-457.