我有一个Matlab函数需要一些时间来运行,我想向用户显示正在取得进展。只需disp
每5%左右的进度就会使屏幕过于混乱,因为以前的文本不会被删除。
如何解决这个问题?命令窗口中还有其他重要信息,因此清除它是不可能的。
答案 0 :(得分:13)
在命令窗口中显示progess也是可能的(也许更容易)。 我在http://undocumentedmatlab.com/blog/command-window-text-manipulation/找到了一个非常简单,快速实施的解决方案。
reverseStr = '';
for idx = 1 : someLargeNumber
% Do some computation here...
% Display the progress
percentDone = 100 * idx / someLargeNumber;
msg = sprintf('Percent done: %3.1f', percentDone); %Don't forget this semicolon
fprintf([reverseStr, msg]);
reverseStr = repmat(sprintf('\b'), 1, length(msg));
end
如果您嵌入此代码,则命令行显示(例如):“完成百分比:27.8”,每次迭代都不输入换行符!
答案 1 :(得分:8)
您可以使用waitbar
功能。请参阅MATLAB Documentation on waitbar。
答案 2 :(得分:2)
检查一下:http://www.mathworks.com/matlabcentral/fileexchange/3607-progressbar和 http://www.mathworks.com/matlabcentral/fileexchange/26773-progress-bar
答案 3 :(得分:0)
基本上@Ergodicity所写的内容是正确的,如果你将标准输出设置为缓冲(默认为btw),只需要Octave,你必须通过page_output_immediately(1)启用它;请参阅此页面了解更多octave doc: Terminal output
对拟议代码进行了非常简短的修改:
DB::update('update inventory set img = ? lastchange = NOW() where barcode = ?',[$img,$id]);