matlab二进制操作,matlab - Matlab中的二进制文件写/读操作 - 堆栈内存溢出

博主在尝试将2D坐标写入二进制文件时遇到问题,读取的内容与原始数据不符。文章详细描述了数据格式化过程,包括保留高位的处理方法,并展示了写入和读取数据的MATLAB代码片段。尽管C++的read()函数能正确处理数据,但在MATLAB中的write()实现存在问题,寻求解决方案。
摘要由CSDN通过智能技术生成

我正在尝试将一些2D坐标写入二进制文件。 但是,我从已写入的文件中读取的内容与原始数据完全不同。 此处给出详细信息。

例如,我有45(X,Y)点。 X和Y均为小于600的整数。模拟要求将它们中的每个存储两个字节(8位),并保留每个字节的2个高位(对于X,保留位用.mrk填充,即1或2;对于Y,只需使用0代替)。 在这种情况下,14位二进制数可以表示最大值16383。我用几种方式写入数据:

in_tmp是由点号(.nm),点保留标记(.mrk)和点坐标(.coor)组成的结构

for i=1:in_tmp.nm

x1 = dec2bin(in_tmp.coor(i,1));

y1 = dec2bin(in_tmp.coor(i,2));

t1 = in_tm.mrk(i);

if(t1==1)

t2 = '01';

t2b = 1;

elseif(t1==2)

t2 = '10';

t2b = 2;

end

lenx = 16-length(x1);

leny = 16-length(y1);

x1hl = strcat(t2, '00000000000000'); % High and low

y1hl = '0000000000000000';

x1a = strcat(x1hl(1:lenx), num2str(x1));

y1a = strcat(y1hl(1:leny), num2str(y1));

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值