我有一个大矩阵(2e6 x 3),我必须将其写入文本文件。
dlmwrite大约需要230s才能完成此任务。
根据您的经验,将大型矩阵写入文本文件的最快方法是什么?
以下内容适用于 MATLAB,但我建议您在 Octave 中尝试。首先,如果可以的话 - 转置矩阵。以下是使用的示例fprintf
and csvwrite
(本质上dlmwrite
)
A = rand(3, 1e6);
tic;
fid = fopen('data.txt', 'w+');
for i=1:size(A, 1)
fprintf(fid, '%f ', A(i,:));
fprintf(fid, '\n');
end
fclose(fid);
toc
tic;
csvwrite('data.txt', A);
toc;
Elapsed time is 1.311512 seconds.
Elapsed time is 2.487737 seconds.
如果不转换,确实需要很长时间。默认情况下,fprintf每次调用后刷新缓冲区 http://blogs.mathworks.com/loren/2006/04/19/high-performance-file-io/。您可以尝试使用W
代替w
打开文件,但这并没有太多改善这里的情况。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)