声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1071|回复: 4

[综合讨论] 二进制文件读写的代码问题

[复制链接]
发表于 2008-9-10 14:55 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
以下是二进制文件的读写示例的代码:

function [data,count,status]=binio_examp
%BINIO_EXAMP二进制文件读写示例
%打开二进制文件写入数据
fid=fopen('magic5.bin','wb');
%写入文本数据
count=fwrite(fid,'喂,你好吗?','int32');
%写入数据
fwrite(fid,magic(5),'int32');
%关闭文件
status=fclose(fid);
%打开二进制文件读取数据
fid=fopen('magic5.bin','rb');
%读取文本
S=fread(fid,count,'int32');
disp(['读取数据类型:',class(S)]);
disp(['读取数据内容:',char(S')]);
%读取数据
[data count]=fread(fid,'int32');
data=reshape(data,5,5);
%关闭文件
status=fclose(fid);


我想问一下:
(1)count=fwrite(fid,'喂,你好吗?','int32');
         %写入数据
         fwrite(fid,magic(5),'int32');
这里的“count=”为什么要写在上面的fwrite语句中,而不是下面?读取数据的个数要从上面开始吗?为什么不从写入数据开始呢,也就是下一行开始?我试验了一下出错了。想知道原理。
(2)disp(['读取数据内容:',char(S')]);这句,char(S')括号中的是什么意思啊?如果理解为转置,那开始的S也没以转置的形式放置啊,为什么这里要转置呢,而我看到magic(5)和S'是一样的,但是内部原理不懂。
希望大家能帮我解决这些问题,很基础,但是我忘记了很多。谢谢大家了!
回复
分享到:

使用道具 举报

发表于 2008-9-10 15:26 | 显示全部楼层
1 有没有count=我觉得应该没有影响吧。“读取数据的个数要从上面开始吗?为什么不从写入数据开始呢,也就是下一行开始?”不知道你什么意思
2 S'是矩阵S的共轭转置。“那开始的S也没以转置的形式放置啊”什么开始
 楼主| 发表于 2008-9-10 15:44 | 显示全部楼层
回二楼朋友
1、count如果按照我所看的书上代码下面一小部分的解释,应该是代表读取的数据的个数。我试验了一下,把count= 放在写入数据的代码fwrite(fid,magic(5),'int32')的前面,即count=fwrite(fid,magic(5),'int32'),上面的代码count=fwrite(fid,'喂,你好吗?','int32');修改为fwrite(fid,'喂,你好吗?','int32');结果就出错了。所以感觉count的位置是有说道的,但是是什么说道想听听大家的讲解,我不明白。
2、代码中“S=fread(fid,count,'int32'); ”,这时的矩阵是magic(5),然后后面的代码“disp(['读取数据内容:',char(S')]);”使用的是S',那结果应该是magic(5)的转置,可是在命令行中运行时,键入>>[data count status]=binio_examp后,结果中的矩阵却还是magic(5),没有转置啊。

望大家指教,谢谢。
发表于 2008-9-10 16:35 | 显示全部楼层
1 我确定有没有count=都没有影响,出错原因是后面S=fread(fid,count,'int32');用到count这个变量。
2 S=fread(fid,count,'int32'); 这里你运行下,S不是个magic矩阵,而是一个6*1的矩阵
class(S)是获取类型
char(S')是将矩阵横着显示出来

lz,再建议你一下,运行程序,你就能发现问题之所在

评分

1

查看全部评分

 楼主| 发表于 2008-9-10 18:01 | 显示全部楼层
谢谢sigma665,我加了一条语句,看到S果然是一个6*1的矩阵,每个元素是5位的数。多谢帮忙,以后我一定细心运行程序。再次感谢!:)
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-17 22:27 , Processed in 0.068506 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表