第 3 层 · 通道清理层 · 第 10 步 / 共 25 步

步骤 10:降采样

降低采样率加速后续计算

🕐 12 分钟🎯 难度:进阶🔗 核心 API:raw.resample⬅️ 前置:步骤 9

1. 目标

将采样率从原始(如 1000 Hz)降低到目标值(如 200/250/500 Hz)。降采样后所有后续步骤(坏导检测、插值、参考、ICA、epoch)都将在低采样率数据上运行,速度可提升数倍到数十倍。

2. 何时使用 / 何时跳过

  • 强烈建议使用:数据原始 ≥ 1000 Hz 时
  • 可跳过:数据原始 ≤ 200 Hz 时(再降会丢失高频信息)

3. 前置条件

  • 已执行步骤 09:带通与陷波已完成

⚠️ 降采样前置条件:带通上限必须 ≤ 目标采样率的 1/2(Nyquist)。例如降到 250 Hz,则 lowpass 必须 ≤ 125 Hz。MNE 默认会自动调整,但建议显式确认。

4. 核心代码

Python
import mne

# ====== 方式 A:最常用:降到 200 或 250 Hz ======
# ERP 研究常用
original_duration = raw.times[-1]  # 记录原始时长用于验证
raw.resample(sfreq=200.0, npad='auto')

# ====== 方式 B:降到 500 Hz(保留更多高频 ERP 成分) ======
raw.resample(sfreq=500.0, npad='auto')

# ====== 方式 C:保持原采样率 ======
# 不调用此方法,或显式设为原值
# raw.resample(sfreq=raw.info['sfreq'])  # 无操作

# ====== 验证 Nyquist ======
nyquist = raw.info['sfreq'] / 2
print(f"降采样后 Nyquist 频率: {nyquist} Hz")
assert raw.info['lowpass'] <= nyquist, \
    f"滤波上限 {raw.info['lowpass']} Hz 超过 Nyquist {nyquist} Hz,需先回到步骤 08 重新带通"

5. 参数详解

参数 含义 推荐值
sfreq 目标采样率 200 / 250 / 500 Hz
npad 抗混叠 padding 'auto'(默认)或具体整数
window 重采样窗函数 'boxcar'(默认)/ 'hann'

目标采样率选择建议

研究类型 推荐 sfreq 理由
ERP(P300/MMN) 200–250 Hz 足够时域精度;速度最快
包含 gamma 频段(30–80 Hz) 500 Hz 保留更多高频成分
时间精度敏感 ≥ 500 Hz 保留原始信息
单被试超大样本(>10⁶ epoch) 100–200 Hz 计算性能优先

6. 验证方法

Python
# 验证 1:采样率已改变
print(f"新采样率: {raw.info['sfreq']} Hz")
assert raw.info['sfreq'] == 200.0  # 或目标值

# 验证 2:时长不变(点数变少,但物理时长不变)
print(f"时长: {raw.times[-1]:.2f} s")
assert abs(raw.times[-1] - original_duration) < 0.5  # 允许小误差

# 验证 3:PSD 形状不变(除最高频)
raw.compute_psd(fmax=100).plot()
# 期望:低中频段形态与降采样前一致

# 验证 4:可视化
raw.plot(duration=2, n_channels=20)
# 期望:信号与降采样前视觉一致(除抗混叠外)

7. 常见错误

错误 原因 解决方案
ValueError: ... Nyquist 带通上限超过目标采样率的一半 回到步骤 08,把 h_freq 调低
降采样后信号出现混叠 抗混叠滤波未做 MNE 默认会自动设置,但需确保 h_freq 已设
误把 epoch 的采样率也改掉 epoch 创建后才降采样 在 epoch 之前降采样更高效
降采样后丢失触发对齐精度 触发信号被降采样"模糊" 触发通道不应被 resample,或用 npad 控制

8. 官方来源

资源类型 链接
raw.resample https://mne.tools/stable/generated/mne.io.Raw.html#mne.io.Raw.resample
教程 https://mne.tools/stable/auto_tutorials/preprocessing/30_filtering_resampling.html

9. 学术引用

Widmann, A., et al. (2012). Filter effects and filter artifacts in the analysis of electrophysiological data. Frontiers in Psychology, 3, 233.