我有一个庞大的数据集,我正在缓存,然后将过滤后的分析数据写入磁盘。我的代码中有各种disp()
命令,以及fprintf()
次调用。
我希望在进程运行时在文件和屏幕上看到结果,但我发现在我终止程序之前我什么也得不到,此时所有数据都是写入我的文件,disp()
充斥终端。
是否有办法强制disp()
和fprintf()
在处理时执行?
以下是一个例子:
function one(varargin)
setenv GNUTERM 'x11';
dirname = strcat(pwd, '/fileset');
files = dir(dirname);
disp('reading directory'), disp(dirname);
fileidx = find(~[files.isdir]);
out = fopen('write_data.txt', 'w');
fprintf(out, '"--- var a[0]", "--- var [1]";\n');
numfiles = length(fileidx);
for i = 1:numfiles
dispstring = sprintf('processing file %d of %d...', i, numfiles);
disp(dispstring);
filename = [dirname, '/', files(fileidx(i)).name];
disp(filename);
fid = fopen(filename, 'r');
%some processing here to obtain timevalues and maxvars
for i = 1:length(timevalues)
fprintf(out, '%d, %d;\n', timevalues(i), maxvars(i));
end
end
fclose(out);
end
我看到了this post,但我不确定建议使用哪种方法。似乎fflush()
用于将数据推送到更高优先级的图中。
答案 0 :(得分:1)
之前我遇到过这个问题,你可以解决它。写
fflush(stdout);
强制使用fflush(stdout)调用之前的stdout所有打印和disps的结果更新终端。我不确定你是否应该打扰将输出刷新到文件,因为它可能会使你的代码变慢,但是如果你想要你可以做的话
fflush(out);