作者venwhah (昆)
看板MATLAB
标题[讨论] fread 读取binary问题
时间Thu May 23 02:31:57 2013
最近从2010a换了2012a以後
在读取binary发现了一个问题
我的资料前面117行是标头(ASCII),
之後会有10个数字(ASCII)储存影像的宽有几条资料(长是固定的)
接着才是二进位的资料(资料格式16 bit正整数 前面4格是其他资讯这里并不需要
所以读12格後跳4格)
过去我处理的方式是
%开档
fp = fopen(filename);
%把标头读出来并另存
for i = 1:117
A{i,1}=fgetl(fp);
end
%读取影像的宽
imagesize = fgets(fp,10);
%读取二进位资料
temp = fread(fp,[555 imagesize],'ubit12',4);
...
..
.
之前执行都没有问题,
但是换了2012a之後发现temp读出来的东西是空的
做了一些尝试以後发现若不用 fgetl 而直接用fread乱读
temp是会有东西的
所以不确定是否使用了fgetl 再使用 fread 会出错
还烦请版众替我解惑
感激不尽
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.121.165.170
※ 编辑: venwhah 来自: 140.121.165.170 (05/23 02:38)
※ 编辑: venwhah 来自: 140.121.165.170 (05/23 02:38)
1F:→ YoursEver:直接读uint16吧,反正是影像,少前四个msb只影响亮度而已 05/23 10:56
2F:→ YoursEver:计算上不会有任何问题;最多显示时*4或*8调整亮度就好. 05/23 10:58