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

如何将.mat文件转换为MNE Raw文件?转换时字符串转浮点报错怎么解决?

错误原因

scipy.io.loadmat()读取.mat文件返回的字典除了实际EEG信号数据外,还包含__header__、__version__这类字符串类型的元数据字段,你直接将全部字典键值对转为numpy数组,混入了非数值内容,不符合mne.io.RawArray()要求的「通道数×采样点数」二维数值矩阵输入规范,因此触发类型转换报错。

正确转换步骤

BCICIV_calib_ds1d是BCI竞赛公开数据集,字段结构固定,可按照以下步骤完成转换:

  1. 读取.mat文件时启用squeeze_me参数自动压缩多余的单维度嵌套
import numpy as np
import scipy.io
import mne

mat_data = scipy.io.loadmat('BCICIV_calib_ds1d.mat', squeeze_me=True)
  1. 提取有效EEG数据与元数据
# 提取EEG信号矩阵,原始形状为 [采样点数, 通道数],转置为MNE要求的 [通道数, 采样点数]
eeg_data = mat_data['cnt'].T
# 提取采样频率
sfreq = mat_data['fs']
# 提取通道名称列表
ch_names = mat_data['nfo']['clab'].tolist()
  1. 生成MNE Info对象
# 声明所有通道为EEG类型
ch_types = ['eeg'] * len(ch_names)
info = mne.create_info(ch_names=ch_names, sfreq=sfreq, ch_types=ch_types)
  1. 生成Raw格式对象
raw = mne.io.RawArray(eeg_data, info)

可选操作:如果后续需要做溯源、电极位置相关分析,可添加代码配置标准电极定位:

raw.set_montage('standard_1020')

内容的提问来源于stack exchange,提问作者Hasin Manjare

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 04:45:04