因为研究生阶段经常用MATLAB作图,处理数据,但是MATLAB太过于庞大,不方便,就想用python处理。
<强>问题:我们通常处理的最原始的数据是本文件,打开后如下所示,是按16进制形式存储的。强>
MATLAB处理时,是按照如下方式读取前10个数,int32数据格式,上图中的红色圈表示MATLAB读取的一个数据,前10个数据表示元数据。
<强> MATLAB读取的前10个数据的结果:强>
而Python中似乎没有可以在指定数据格式位数下读取本文件中数据,例如想以Python中的阅读()读取时,图一中的蓝线所圈的表示一个数据,图中圈了两个数据。用以下程序读取MATLAB所读取的10各数据,则需要读40个。
结果如下:也是16进制
每隔三个数据对应时MATLAB读取的数据。
想到用结构体包里面的解包函数解决问题,可以可惜的python中打开时不支持float32,也不支持int32,所以上面在用python读取数据时,不能以32位读取,最多以8位读,从而python挨个读取时一个蓝线圈里的数据。
#按照给定的格式(fmt)解析字节流字符串,返回解析出来的元组
解压(fmt,字符串)
字符串类似于:\ x00 \ x00 \ x00 \ x0c \ x00 \ x00 \ x00 \ x18 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00] \ x00 \ x00 \ x00 \ x0c \ x00 \ x00 \ x00 \ (\ x00 \ x00 \ x00 \ t \ x00 \ x00
格式 C类型 PYTHON类型 标准尺寸 笔记 x 垫字节 没有任何价值 c 字符 字符串的长度是1 1 b 签署了字符 整数 1 (3) B 无符号字符 整数 1 (3) & # 63; _Bool 保龄球 1 (1) h 短 整数 2 (3) H 无符号短 整数 2 (3) 我 int 整数 4 (3) 我 无符号整型 整数 4 (3) l 长 整数 4 (3) l 无符号长 整数 4 (3) 问 很久很久 整数 8 (2), (3) 问 无符号长时间长 整数 8 (2), (3) f 浮动 浮动 4 (4) d 双 浮动 8 (4) 年代 char [] 字符串 p char [] 字符串 P void * 整数(5), (3)
个人觉得python这方面做的没有matlab好,
所以python不能以类似于MATLAB中从文件中读(f, N, int32)或者从文件中读(f, N,真正的* 4)的方式读取上图中的字符流,也无法解析。
以上这篇Python3按一定数据位数格式处理本文件的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。