作者shuntau (猫柳田博士)
看板MATLAB
标题[讨论] 有没有不用回圈输出cell array的方式
时间Thu Jul 11 17:44:41 2013
其实这要先讲到一个前因
任务是要做某个表格并且存出来
表格的格式如下
file_001 12 321 523
file_002 26 261 286
file_003 23 989 889
... ... ... ...
当然以上的东西几乎都是可以直接用指令写出来
就直觉上来说,通常就是会先处理最左边字串的部分
然後再处理右边矩阵的部分
最後因为字串跟矩阵无法结合,所以用了cell array来存
到这边都还没问题,直到存出的时候就发生问题了
因为想说变数的输出大概是这样
save file.txt cell -ascii
结果这招不能拿来给cell array使用
後来自己查了一下,大致上的作法就是用fopen与fprintf这两个指令去做
以上面的例子来说,大概会写成这样
scell = size(cell)
fid=fopen('cell.txt','w+');
for i=1:scell(1)
fprintf(fid,'%s %f %f %f \n',cell(i,:));
end
fclose(fid);
任务是达成了
但是各位请注意,这个有用到回圈
所以想请教各位,有没有不使用回圈而达成任务的方法?
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.112.190.70
※ 编辑: shuntau 来自: 140.112.190.70 (07/11 17:45)
1F:推 kurt28:好像是因为文字的关系导致一定得这样去存入txt? 07/11 22:16
2F:→ kurt28:刚刚去实验 似乎会把file_001~003全部当同个字串 然後存成 07/11 22:18
3F:→ kurt28:ffffiiiilllleeee.... 也就是每列字元全部当一个字串 07/11 22:18
这个我说明一下好了
产生字串之後,只要用char这个指令就可以把字串变成cell了,而且会在空格的地方分段
并且还可以取转置矩阵喔!
※ 编辑: shuntau 来自: 114.42.53.183 (07/11 22:36)
※ 编辑: shuntau 来自: 114.42.53.183 (07/11 22:37)
4F:推 kurt28:感谢原PO补充 所以我的意思是 如果能够处理文字部份 07/11 23:09
5F:→ kurt28:後面数字部份就没有太大的问题了 07/11 23:10
6F:→ shuntau:不过我是还没想到不用回圈的方式 07/11 23:48
7F:→ shuntau:仔细想想,加了字串的东西就不是ascii了啊 07/11 23:50
8F:→ shuntau:所以一开始使用save跟load的我真的耍白痴了 07/11 23:50