ang*_*nor 15
以下内容适用于MATLAB,但我建议您在Octave中尝试.首先,如果可以 - 转置矩阵.以下是使用fprintf和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.
Run Code Online (Sandbox Code Playgroud)
如果没有转置,确实需要很长时间.默认情况下,fprintf每次调用后刷新缓冲区.您可以尝试使用W而不是w打开文件,但这并没有太多改善这种情况.
你试过这个吗?与dlmwrite相比,我不确定它的速度.
a = [1 2;3 4];
save temp.txt a;
Run Code Online (Sandbox Code Playgroud)