当前位置: 首页 > news >正文

MNE读取数据单位问题

问题描述

在用同一个数据,两种数据读取方法,分别进行AI网络推理的时候,发现结果大相径庭。

经过调查是单位问题!

  • 在一些 EDF 文件中,数据可能以微伏(uV)为单位存储,mne.io.read_raw_edf 读取时  会自动将其转换为伏(V)

  • 方式一:使用raw.get_data(picks=picks),读取具体通道数据的时候,单位并不会自动转化。

  • 方式二:使用 raw.to_data_frame() 将数据转换为 Pandas DataFrame 时,MNE 也会自动进行单位转换,使得数据以更易读的形式展示。

这就导致了方式一的值比方式二的值小了1e6,从而网络推理的时候结果异常,因为网络输入前没有使用归一化。

def get_edf_data(path, picks):"""输入edf文件地址和通道名称返回信号数据, 形状为 (epoch_num, channels, epoch_length)"""raw = mne.io.read_raw_edf(path, preload=True, verbose=False)# 检查通道和采样频率print('数据通道名称:', raw.ch_names)print('数据采样率:', raw.info['sfreq'])# raw数据下采样为100Hztarget_fs = 100raw.resample(target_fs, npad="auto")print('数据下采样为:', target_fs)# 选择需要的通道data = raw.get_data(picks=picks)print("选择通道:", picks)# 数据格式化为模型输入所需的形状data = data.T     # 转置后的数据形状为 (samples, channels)epoch_length = 30 * target_fs  # 1个epoch是30秒epoch_num = data.shape[0] // epoch_lengthdata = data[:epoch_length * epoch_num]  # 丢弃末尾多余的数字data = data.reshape(-1, epoch_length, len(picks)).transpose(0, 2, 1)print("data的shape:", data.shape)# 乘以 1e6data *= 1e6print("首个data的具体数值:", data[0, 0, :10])print("****************")EPOCH_SEC_SIZE = 30raw = mne.io.read_raw_edf(path, preload=True, verbose=False, stim_channel=None)# raw数据下采样为100Hztarget_fs = 100raw.resample(target_fs, npad="auto")sampling_rate = raw.info['sfreq']raw_ch_df = raw.to_data_frame()[picks]  #n_trims = len(raw_ch_df) % int(EPOCH_SEC_SIZE * sampling_rate)raw_ch = raw_ch_df.values[:-n_trims]n_epochs = int(len(raw_ch) / (EPOCH_SEC_SIZE * sampling_rate))data_2 = np.asarray(np.split(raw_ch, n_epochs)).astype(np.float32)data_2 = data_2.reshape(-1, epoch_length, len(picks)).transpose(0, 2, 1)print("data_2的shape:", data_2.shape)print("首个data_2的具体数值:", data_2[0, 0, :10])sys.exit(0)  # 正常退出return data


http://www.mrgr.cn/news/35165.html

相关文章:

  • akamai解混淆(ast)
  • 穿透式薪酬监管,红海云打造“三全”数智化薪酬管理系统
  • 近千亿市场开卷!AutoDisplay Week 2024车载显示产业周开放注册!
  • 性能测试工具——JMeter
  • vue2若依项目打包部署页面不请求或404
  • vant Uploader 文件上传 修改上传icon样式
  • Qt:关于16进制数转化那些事
  • 如何配置路由器支持UDP
  • Spring Boot 学习之路 -- 基础认知
  • Unity 百度AI实现无绿幕拍照抠像功能(详解版)
  • 统一建模语言(UML)在软件研发过程中常用图接受:类图、用例图、时序图、状态图、活动图、流程图、顺序图
  • 什么是BOM?
  • 【Kubernetes】常见面试题汇总(三十六)
  • Activiti7《第九式:破气式》——流畅驱动工作流进程。面试题大全
  • 牛客周赛 Round 61 (C++实现)
  • 在不牺牲质量的情况下压缩 WebP 图片大小的 3 种方法
  • CDA Level 1 考试成绩汇报
  • QT 中的信号与槽机制详解
  • 基于python+django+vue的电影数据分析及可视化系统
  • Redisson使用详解:一个强大的Redis Java客户端