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

记录一个单独读取evt.bdf的方法

问题描述

之前只能使用eeglab的工具,读取博瑞康达的data.bdf和evt.bdf时,使用的是eeglab的下面这个读取文件的插件。

在这里插入图片描述
evt.bdf使用记事本文件查看是乱码的形式。
在这里插入图片描述

实现方法

事实上,我们可以直接对这个文件的16进制进行解析。
在这里插入图片描述
对文件的位和形式进行解析。
每个数据段是event数,时间戳timestamp,还有事件标签label的组合。
可以构造出下面的读取evt.bdf的函数。

python代码实现


import os
def read_evt_bdf(evt_path)->dict:with open(evt_path, 'r', encoding='mac_roman') as file:lines = file.readlines()eof=len(lines[0])i=0Start=768Event = {}offset1 =  768def extract_event_time(String):#经过对数据的十六进制研究,发现数据是768个开始,每个数据有303# String = lines[0][Start+i*303:Start+(i+1)*302]#数据开始有三个\x00\x00\x00,#事件的次序的个数,在3号的位置‘+'和\x14之间start1 = 3end1=String.find('\x14',start1)num = String[start1:end1]# print(num)#时间戳和次序类似,‘+'和\x150\x14之间start2=String.find('+',end1)end2=String.find('\x150\x14',start2)timeStamp =  String[start2:end2]# print(num,timeStamp)# 提取标签# 这个之后,242\x14label_start = end2 + len('\x150\x14')label_end = String.find('\x14', label_start)label = String[label_start:label_end]#转化成整数event_num = int(num)timeStamp=int(timeStamp.replace('.',''))# print(event_num,timeStamp)return event_num,timeStamp,label while(Start+i*303<len(lines[0])):string = lines[0][Start+i*303:Start+(i+1)*302]event_num,timeStamp,label=extract_event_time(string)Event[event_num] = {'timestamp': timeStamp, 'label': label}  # 修改为存储字典i=i+1if  Event !={}:return Event

dir_path = r"你的文件夹"
evt_path = os.path.join(dir_path,"evt.bdf")
event = read_evt_bdf(evt_path)

这个是运行出的event字典,可以直接按照这个对时间段进行截取。
在这里插入图片描述
但是推荐使用mne的工具处理包,使用eeglab处理后导出的文件,因为,如果进行降采样,或者其他的处理操作,会改变,有些麻烦。

但是如果想快速截取某一段,作为机器学习的不处理的原始数据进行分析还是可以的。

http://www.xdnf.cn/news/3055.html

相关文章:

  • 头歌java课程实验(文件操作)
  • 【CF】Day46——Codeforces Round 967 (Div. 2) B
  • 2025年高级Java后端面试题:最新技术体系深度解析
  • java发送邮件
  • 运行不会存储上一次的命令;运行命令不保存历史记录
  • 算法备案类型解析:如何判断你的算法属于哪种类型?
  • conda添加新python版本环境,如何激活和销毁
  • 深入理解 Web Service:原理、组件与核心技术详解
  • c++ 内部类
  • linux使用亚马逊aws-sdk-cpp
  • 适合五一劳动节的SVG模版
  • C++/SDL 进阶游戏开发 —— 双人塔防(代号:村庄保卫战 15)
  • Windows多网卡设置路由冲突的解决
  • 程序员如何用AI工具实现“快速验证原型”
  • Rational Rose显示工具栏及添加工具栏中想要的工具(小人图标,用例图标)
  • 浏览器限制了cookie数量怎么办
  • Educational Codeforces Round 178 (Rated for Div. 2)
  • 什么是单臂路由
  • 制作JDK17 arm64基础镜像,解决字体安装问题
  • 使用Python将大文件夹中的文件分成文件数量相等的小文件夹
  • AI编程工具“幻觉”风险与飞算JavaAl的破局之道
  • 【滑动窗口】最大连续1的个数|将x减到0的最小操作数
  • 消息处理机制 Handler、Looper 和 MessageQueue
  • DeepSeek 联手 Word,开启办公开挂模式
  • windows编译chromium环境配置官方文档说明
  • 信息系统项目管理工程师备考计算类真题讲解十一
  • 什么叫自媒体矩阵营销,多个账号ip关联如何处理
  • MapReduce的shuffle过程详解
  • IIC小记
  • ​Indira量化APP集成IAS 2.0服务器矩阵协议,正式更新上线苹果App Store