我在实验室工作,我们使用自定义Labview VI获取电生理记录(跨4个记录通道),将获取的数据保存为.DAT(二进制)文件。然后可以在更多的Labview VI中继续分析这些文件,但是我想用Python分析我的所有录音。首先,我需要遍历所有文件并将它们转换为二进制文件!
我已经尝试过numpy.fromfile(filename),但我拿出的数字对我没有意义:
阵列([3.44316221e-282,1.58456331e + 029,1.73060724e-077,..., 4.15038967e + 262,-1.56447362e-090,1.80454329e + 070])
为了进一步尝试,我查找.DAT标头格式,以了解如何获取字节并翻译它们 - 数据保存的字节数等: http://zone.ni.com/reference/en-XX/help/370859J-01/header/header/headerallghd_allgemein/
但我无法解决该怎么做。当我在终端输入“head filename”时,下面是我看到的。
e.g。 >> 2014_04_10c1slice2_rest.DAT
DTL? 0 ???? @@ ???? 空数组 PF?c??????????????????????????????????????????????????????????????????????? 22 N T&X ??? d? ?紫外线?TGD?〜我? ?19 NŤX>有N 10 ????吨X>有N 10 ????吨??? d? ????吨?X ??? d? ????吨?X?〜I 12 ???? TGD> N 10 30 N 2 TGD ??? d? 22 N T&X ??? d? ????吨???? DY ?19 NŤX>有N 10 30 N 2吨???? DY ?KN $?吨????? DY 20 N吨??>有N 10 ?19 N TGD> N 10 ????吨?X?〜I 12 ???? TGD> N 10 ?19 N TGD> N 10 30 N 2 TGD ??? DY ????吨?X ??? d? ???? T 380〜I 12 30 N 2 TGD ??? DY 30 N 2 TGD ??? d? 22 N T&〜I 12 32 N 2吨?X ??? DY ?19 N TF> N 10 32 N 2吨?X?%Y
对于下一步该做什么的任何帮助或建议都将非常感激。
感谢。
P.S。有一个旧的(损坏的)matlab文件似乎是为了转换这些文件。我认为这可能会有所帮助,但是花了几天时间试图理解它我仍然被卡住了。 http://www.mathworks.co.uk/matlabcentral/fileexchange/27195-load-labview-binary-data
答案 0 :(得分:1)
基于this link,看起来以下应该可以解决这个问题:
binaryFile = open('Measurement_4.bin', mode='rb')
(data.offset,) = struct.unpack('>d', binaryFile.read(8))
请注意,对于二进制文件,mode
设置为'rb'
。
使用numpy
,您可以直接执行此操作
data = numpy.fromfile('Measurement_4.bin', dtype='>d')
请注意,如果您只是使用Python作为中间人并希望使用数据返回LabVIEW,则应使用函数Read from Binary file.vi使用本机LabVIEW读取二进制文件。
答案 1 :(得分:1)
DAT是一个非常通用的后缀,不一定指向特定格式。如果我理解正确,该帮助部分适用于DIAdem,这可能与您从LV保存数据的方式完全无关。
你想要的是这个帮助部分,它告诉你LV如何平展要存储在磁盘上的数据 - http://zone.ni.com/reference/en-XX/help/371361J-01/lvconcepts/flattened_data/
您需要查看LV代码,以确切了解您要保存的数据类型以及如何配置写入文件功能(字节顺序,大小前置等),然后使用该文档将其转换为实际的表现形式。