我正在使用GUI在MATLAB中工作。而且我有一个for
循环和一个带有while
循环的GUI,每个步骤都需要延迟大约1秒钟。但是,当我使用pause(1)
时,GUI会卡住,while
循环将停止工作,并且直到循环完成才更新。
这是我的代码:
count= uicontrol('Style','text',...
'String', '0',...
'Tag','Count',...
'Fontsize',12,...
'Position',[40, 350,35,35]);
i = 0;
while i < 1000
%do something
i++;
disp(i);
end
这是嵌套函数中的for
循环:
for m=0:1:10
%do something
c = findobj('Tag','Count');
set(c, 'String', num2str(m));
pause(1);
end
但是当我执行此for
循环时,UI文本不会更新。完成后,它将在UI文本中显示10
。我希望它显示从1到10的每个步骤。
非常感谢您的帮助。预先谢谢你。
答案 0 :(得分:-1)
尝试使用drawnow
命令。这样,您可以强制MATLAB重新绘制图形元素。我不确定将该函数放在代码中的哪个位置,但是我建议您首先尝试将其作为最后一个命令放入两个循环中,然后再找出保留在哪个位置的重要性。
前段时间我做了类似的事情,有2个循环,一个在GUI中,一个在MATLAB脚本中。使两个循环同时运行而不阻塞的唯一方法是使用drawnow
。