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(stdout);

fflush(stdout) の呼び出しの前に行われた stdout へのすべての出力と表示の結果で端末を強制的に更新します。おそらくコードが遅くなる可能性があるため、出力をファイルにフラッシュする必要があるかどうかはわかりませんが、必要に応じて行うことができます

fflush(out);
于 2013-03-03T06:45:48.957 に答える