作者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