找回密码
 注册
Simdroid-非首页
查看: 85|回复: 4

fprintf格式问题请教

[复制链接]
发表于 2017-11-11 16:09:14 | 显示全部楼层 |阅读模式 来自 中国
将一个矩阵写入一个文本:a=[1 2 3;1 2 3;1 2 3;1 2 3;1 2 3;1 2 3]
fid1=fopen('abc.txt','wt')
fprintf(fid1,'%d %d %d %d %d %d \n',a)

矩阵有6行,所以用了六个数据格式%d %d %d %d %d %d,问题是,如果矩阵很庞大,比如有一万行,那么fprintf的时候要用写一万个%d 吗?太不可思议了,请教有没有简单的办法。
发表于 2017-11-16 23:25:47 | 显示全部楼层 来自 台湾
Simdroid开发平台
本帖最后由 Phantom28 于 2017-11-16 23:46 编辑

如果你的資料真的有300行
我能想到的方法就是利用迴圈,寫300個 %d。
______________________________
tm='';
for i=1:300     %看你要幾個 %d
    tm=['%d ' tm];
end
tm=[tm '\n'];   %最後再加個跳行符號
______________________________
如此你程式最後一行改寫成:
fprintf(fid1, tm ,a)
希望有幫到你!


回复 1 不支持 0

使用道具 举报

发表于 2017-11-15 10:23:20 | 显示全部楼层 来自 台湾
本帖最后由 Phantom28 于 2017-11-16 23:20 编辑

應該是看你要多少個數據讀取成一列寫幾個 %d 喔!
Help的範例,請參考。

x = 0:.1:10;  % 共101個值
A = [x; exp(x); sin(x)];   %每一列要輸出3個數值,總共 101x3 的矩陣
fileID = fopen('exp.txt','w');
fprintf(fileID,'%6s %12s %12s\n','x','exp(x)','sin(x)');
fprintf(fileID,'%6.2f %12.8f %12.8f\n',A);
fclose(fileID);
type exp.txt
回复 不支持

使用道具 举报

 楼主| 发表于 2017-11-16 22:57:31 | 显示全部楼层 来自 中国
Phantom28 发表于 2017-11-15 10:23
應該是看你要多少個數據讀取成一列寫幾個 %d 喔!
Help的範例,請參考。

谢谢,深受启发。但是我说的是行数太多的情况,如A不是3行,而是很多很多行,那fprintf的数据格式怎么写?比如A有300行,我要写300个%吗?
回复 不支持

使用道具 举报

 楼主| 发表于 2017-11-17 01:02:01 | 显示全部楼层 来自 中国
Phantom28 发表于 2017-11-16 23:25
如果你的資料真的有300行
我能想到的方法就是利用迴圈,寫300個 %d。
______________________________

按照提供的代码试了一下,果真完美的解决了问题!!非常感谢!
回复 不支持

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-4-18 14:03 , Processed in 0.028125 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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