我有一個龐大的數據集,我正在緩存,然後將過濾後的分析數據寫入磁盤。我的代碼中有各種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循環結尾... – jml
如果您已將其作爲解決方案發布,我可以確認它。除此之外,我需要更多關於你會做什麼的細節。隨意張貼一個實際的答案... Thx – jml
雖然有人已經upvoted它,我想我只是不得不刪除我的答案('暫停'沒有幫助)。不知道還有什麼可以做的伎倆,也許切換到Matlab? –