声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1722|回复: 11

[编程技巧] 对txt文件如何使得保存与读取后数据存储方式一致

[复制链接]
发表于 2007-11-5 15:36 | 显示全部楼层 |阅读模式

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

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

x
A=[1 2 3; 4 5 6 ;7 8 9]
A =
     1     2     3
     4     5     6
     7     8     9
>> fid1=fopen('c:\MATLAB6p5\work\123.txt','w');
>> fprintf(fid,'%d',A);
>> fclose(fid)
ans =
     0
>> fid1=fopen('c:\MATLAB6p5\work\123.txt');
>> b=fscanf(fid1,'%d')
b =
   147258369

保存的是矩阵,结果不是矩阵,这个问题怎么解决
先说声麻烦了

[ 本帖最后由 eight 于 2007-11-5 19:23 编辑 ]
回复
分享到:

使用道具 举报

发表于 2007-11-5 18:11 | 显示全部楼层
save 123.txt -ASCII A
 楼主| 发表于 2007-11-5 18:20 | 显示全部楼层

回复 #2 pulse 的帖子

多谢阿
好像还不行呢:@(
发表于 2007-11-5 19:24 | 显示全部楼层
原帖由 yongzhen913 于 2007-11-5 15:36 发表
A=[1 2 3; 4 5 6 ;7 8 9]
A =
     1     2     3
     4     5     6
     7     8     9
>> fid1=fopen('c:\MATLAB6p5\work\123.txt','w');
>> fprintf(fid,'%d',A);
>> fclose(fid)
ans =
     0
...


请先到精华区看看有否收获
发表于 2008-5-2 12:20 | 显示全部楼层
A=[1 2 3; 4 5 6 ;7 8 9]
fid=fopen('d:\Program Files\MATLAB71\work\123.txt','w');
fprintf(fid,'%d %d %d\n',A);
fclose(fid)

评分

1

查看全部评分

发表于 2008-5-2 18:30 | 显示全部楼层

回复 5楼 的帖子

5楼的方法得到的好像是转置后的A矩阵。是版本问题?我觉得不像。

建议楼主浏览置顶帖先。
发表于 2008-5-2 19:19 | 显示全部楼层
原帖由 sogooda 于 2008-5-2 18:30 发表
5楼的方法得到的好像是转置后的A矩阵。是版本问题?我觉得不像。

建议楼主浏览置顶帖先。


我也试了一下,不是版本问题,5楼的方法不能满足
下面是我编的一段代码:

A=[1 2 3; 4 5 6 ;7 8 9];
[B,C]=size(A);
fid1=fopen('C:\Documents and Settings\Administrator\桌面\123.txt','w');
for i=1:B
    fprintf(fid,'%d %d %d\n',A(i,1),A(i,2),A(i,3));
end
fclose(fid)

A=[1 2 3; 4 5 6 ;7 8 9];
[B,C]=size(A);
fid1=fopen('C:\Documents and Settings\Administrator\桌面\123.txt','w');
for i=1:B
     fprintf(fid,'%d %d %d\n',A(i,:));
end
fclose(fid)

评分

1

查看全部评分

发表于 2008-5-2 19:43 | 显示全部楼层
人为加上空格与回车就可以了。
发表于 2008-5-11 13:06 | 显示全部楼层

回复 7楼 的帖子

请问下,那如果是比较大的矩阵呢,例如21*300呢,是不是要输入21个%d呢,有什么其他方式么
发表于 2008-5-11 13:19 | 显示全部楼层
原帖由 fanghogyuan 于 2008-5-11 13:06 发表
请问下,那如果是比较大的矩阵呢,例如21*300呢,是不是要输入21个%d呢,有什么其他方式么


试试这个:

A=[1 2 3 5; 4 5 6 7;7 8 9 10];
[B,C]=size(A);
fid1=fopen('C:\Documents and Settings\Administrator\桌面\1234.txt','w');
for i=1:B
    for j=1:C
        fprintf(fid1,'%d  ',A(i,j));
    end
    fprintf(fid1,'\n');
end
fclose(fid1)
发表于 2008-5-11 13:44 | 显示全部楼层

回复 10楼 的帖子

谢谢您这么关心我的问题,我使用fwrite函数好像不支持‘d%‘这个参数啊,总显示fwrite命令出错,我的保存为二进制格式
发表于 2008-5-11 18:36 | 显示全部楼层
保存为二进制格式显示不支持是什么原因
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-11-18 04:37 , Processed in 0.059964 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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