读写bin
来源:互联网 发布:四川大学王牌专业知乎 编辑:程序博客网 时间:2024/06/05 00:42
前言
工程中经常将参数文件存储为bin
格式, 但是实际中为了分析其参数, 也不好用C++去读取调试它, 所以可以用matlab
或者python
去读取它, 但是还是蛮坑的
Matlab中的读取和写入
写入文件
比较坑的是, 一定要注意自己的文件存储的类型, 比如数值是float
还是double
之类的, 不然很容易在读取的时候出问题.
关于数字的写入方法如下:
fileID=fopen('MatrixTest.bin','w');%w+是不擦除,直接附加内容a=[1,2,3;4,5,6;7,8,9];fwrite(fileID,a,'double');%存储为double类型fclose(fileID);
文本的写入方法同样:
fileID=fopen('TxtTest.bin','w');%w+是不擦除,直接附加内容a='哈哈哈哈嗝';fwrite(fileID,a,'char');%写入格式charfclose(fileID);
读文件
一定要与写入的数据类型相同
读取bin
中存储的矩阵
fileID=fopen('MatrixTest.bin');A=fread(fileID,[17,17],'double')fclose(fileID);%% 输出A'ans = 1 4 7 2 5 8 3 6 9
可以发现matlab是列读取的, 如果我们知道矩阵的大小,那么就可以指定好
fileID=fopen('MatrixTest.bin');A=fread(fileID,[3,3],'double')fclose(fileID);%输出A = 1 2 3 4 5 6 7 8 9
如果我们将double
类型替换成float
,得到的结果就是
A = 0 2.2500 0 1.8750 0 2.0000 0 2.4375 0
可以发现是完全错误的,当然我们不指定类型, 即去掉double
, 最终的结果也是错误的, 因而这个格式需要非常严格.
读取文本就需要用另一个函数native2unicode
,而且不需要指定数据类型
fileID=fopen('TxtTest.bin');A=fread(fileID);native2unicode(A')fclose(fileID);%输出ans =哈哈哈哈嗝
Python中的读取和写入
主要涉及到tofile
和fromfile
两个函数, 同时也必须注意存储的矩阵数值的类型
写入文件
import numpy as npimport sysa=np.arange(1,10,1).reshape(3,-1)a=np.asarray(a,dtype='float')a.tofile('matrix_a.bin')
这样我们就在bin
文件中存储了一个矩阵, 类型为float
[[ 1. 2. 3.] [ 4. 5. 6.] [ 7. 8. 9.]]
读取文件
读取就很简单了,就一个函数,只不过要提前知道数据类型
b=np.fromfile('matrix_a.bin','float')#输出#[ 1. 2. 3. 4. 5. 6. 7. 8. 9.]
总结
从这里可以发现, 无论是matlab还是python, 我们存储和读取的时候的数据类型一定要一致,不然读到的结果就是错误的. 还可以发现matlab是按列存储, python是按行存储的
阅读全文
0 0
- 读写bin
- bin文档读写
- LLT测试 -读写BIN文件
- LLT测试(1)读写BIN文件
- matlab读写raw二进制数据 bin文件
- 微软开放的关于BIN文件格式的读写部分
- 利用bin-log文件特点配置读写分离
- bin()
- /bin
- linux之gcc命令 && 嵌入式linux下的可执行bin:串口读写实例
- MySQL 用户授权和bin-log日志和主从复制、读写分离(1)
- MySQL 用户授权和bin-log日志和主从复制、读写分离(2)
- matlab 实践程序4——实现读写.bin二进制文件(ciafr10图片的逆置)
- #!/bin/sh & #!/bin/bash
- #!/bin/bash #!/bin/sh
- 读写
- 读写
- 读写
- 利用Eclipse搭建Linux内核开发环境
- Nginx + CGI/FastCGI + C/Cpp
- [数论 拓展欧拉定理] BalkanOI 2016. Power-towers
- 在这里23种经典设计模式UML类图汇总
- $sort
- 读写bin
- Json序列化成实体
- Ubuntu下python3.5报错cannot import name 'multiarray'
- SAP RFC JCO实战浅谈
- Linux 时间获取函数-C语言
- 有一些题(day2下)
- Oracle(四)权限,procedure,块,function,package
- SpringMVC之类型转换Converter
- Spring MVC之@RequestMapping 详解