【发布时间】:2013-02-03 22:23:16
【问题描述】:
我正在缓存一个庞大的数据集,然后将过滤后的分析数据写入磁盘。我的代码中有各种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() 似乎也是为了将数据推入更高优先级的绘图中。
【问题讨论】:
-
你会在哪里暂停?我在想在打印的 for 循环结束时......
-
如果您将其作为解决方案发布,我可以确认。除此之外,我需要更多关于你会做什么的细节。随意发布一个实际的答案......谢谢
-
虽然有人已经投票了,但我想我只需要删除我的答案(
pause没有帮助)。不知道还有什么办法可以解决问题,也许改用 Matlab? -
由于价格差异(免费与数千美元),无法切换到 Matlab。