2

我有一个正在缓存的庞大数据集,然后将过滤后的分析数据写入磁盘。我的代码中有各种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

我看到了这篇文章,但我不确定建议的哪些方法适用于我。这似乎fflush()也是为了将数据推入更高优先级的情节中。

4

1 回答 1

1

我以前遇到过这个问题,你用 fflush 来解决它。写

fflush(stdout);

强制终端使用调用 fflush(stdout) 之前的所有打印和显示到标准输出的结果进行更新。我不确定您是否应该费心将输出刷新到文件,因为它可能会使您的代码变慢,但如果您愿意,您可以这样做

fflush(out);
于 2013-03-03T06:45:48.957 回答