You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用MNE-python批量读取同目录多个.EDF文件并合并数据

MNE-Python 批量读取同目录EDF文件并拼接实现方案

批量读取拼接失败基本都是两个原因:一是没有正确遍历拿到目录下所有EDF文件的有效路径,二是不同被试文件的通道配置、采样率不匹配导致拼接报错,按以下步骤操作即可:

步骤1:自动遍历获取目录下所有EDF文件路径

不要手动逐个写文件路径,用路径匹配自动获取,先确认拿到全部25个文件的路径:

from pathlib import Path
import mne

# 替换为你存放25个EDF文件的文件夹实际路径
edf_folder = Path("你的EDF存储文件夹路径")
# 匹配目录下所有.edf后缀文件,按文件名排序避免顺序错乱
raw_file_paths = sorted(edf_folder.glob("*.edf"))

# 先打印校验文件数量和文件名
print(f"当前匹配到EDF文件数:{len(raw_file_paths)}")
for path in raw_file_paths:
    print(path.name)

注意:如果是Mac/Linux系统,文件名区分大小写,若你的文件后缀是大写.EDF,把匹配规则改成*.EDF即可

步骤2:批量加载EDF文件,提前统一配置

加载过程中统一处理通道、采样率,避免后续拼接报错:

raw_list = []
target_sfreq = 250  # 按需改成你需要的统一采样率

for file_path in raw_file_paths:
    # 读取单个EDF,加载到内存
    raw = mne.io.read_raw_edf(file_path, preload=True, verbose=False)
    
    # 可选:只保留EEG通道,剔除EMG/EOG等不需要的通道
    # raw.pick_types(eeg=True)
    
    # 统一重采样到固定采样率,避免采样率不一致报错
    raw.resample(target_sfreq)
    
    # 可选:如果存在通道名大小写、命名不统一的问题,在这里统一重命名
    # 比如把所有通道名转为大写:
    # raw.rename_channels({ch:ch.upper() for ch in raw.ch_names})
    
    raw_list.append(raw)

步骤3:拼接所有被试数据

用MNE内置的raw拼接方法完成合并:

# 拼接所有加载完成的raw对象
merged_raw = mne.concatenate_raws(raw_list, preload=True)

# 后续可以直接获取合并后的全量数据、通道信息
all_data = merged_raw.get_data()
all_channels = merged_raw.ch_names
print(f"合并后数据总时长:{merged_raw.times[-1]:.2f} 秒")

常见报错排查

  • 提示找不到文件:检查填写的文件夹路径是否正确,确认文件后缀匹配规则和实际文件一致
  • 提示通道不匹配:逐个打印每个raw的ch_names对比,删除多余通道、统一不一致的通道命名,确保所有待拼接文件的通道数量、名称完全一致
  • 提示采样率不匹配:确保所有文件都经过重采样步骤,统一到相同采样率后再拼接

内容的提问来源于stack exchange,提问作者Abdul Kader

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 06:24:25