作者physmd (smd)
看板MATLAB
标题Re: 如何输出比较快速
时间Sun Jul 22 02:17:24 2012
: 另一方面, fwrite 好像也不错用....可是怎麽用阿? 档案会存到哪里去呢?
: 譬如说这个网页讲到的:
: http://www.mathworks.com/matlabcentral/newsreader/view_thread/266745
:
: 推 kevinztw:改用fwrite之类低阶档案存取函数+上不要用回圈存 07/21 17:06
: → kevinztw:一次就存一整个完整矩阵 07/21 17:07
: 推 sunev:用save不行吗? 07/21 17:42
喔喔感谢各为即时的回应~
1.
阿...用 save 的确比较快 (费时小於csvwrite的1/4) 而且档案比较小 (< 1/2)
哈哈我之前怎麽以为save比较慢...可能因为某些网页这麽写的吧 我自己也没试 :P
2.
前一篇没讲清楚, 我其实的确是在回圈跑完才存的:
for i = 1:n
...
... <---产生数据 data = n by 56 矩阵, n = 3*10^5
end 费时约90秒
csvwrite(filename, data)
% 费时约 83 秒, 如果是拆成两种数据(uint8 & float)来存 也没有比较快
save(filename, 'data') %按照预设的压缩以及 unicode 等等
% 费时约 20 秒 ..........姑狗上说 fwrtite 可以更快??
% 如果加上 '-ascii' 的话费时 40 秒
3.
我还是不太懂 fwrite, 它的 code 并没有地方让我指定要存到哪个档案不是吗?
Help 说明里面的通例
count = fwrite(fid,A,precision);
其中 count 也只会是某整数, fid 的话我应该是要用 1 吧, A 就是我的数据矩阵 data,
而 precision 就是 real*4之类的.
那这样有把档案存到哪里吗?
谢啦
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 96.19.145.41
1F:推 sunev:要先fopen取得fid,最後要记得fclose 07/22 02:51
2F:→ sunev:但如果是单纯要存变数,用save比较乾脆。 07/22 02:52
3F:→ physmd:喔喔~ 我再仔细瞧瞧. 谢啦 07/22 13:27