步骤 15:SSP 投影(心电)
计算 ECG 投影向量
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.