2015-10-22 118 views
1

一旦所有窗口图形关闭(即,当我通过单击手动完成关闭每个图形窗口时),我想停止执行脚本。我尝试过:一旦所有图形窗口关闭,退出matlab脚本

x = 1:10; 
plot(x,x); 
while ~isempty(findall(0,'Type','Figure')) 
    if isempty(findall(0,'Type','Figure')) 
     exit 
    else 
     continue 
    end 
end 

但是,上面的代码i)没有显示数字,并且ii)循环从不结束。所以我的问题是:一旦所有图形窗口关闭,如何退出matlab执行?

回答

1

所有你需要的是更新回调。为此,请在while循环内使用drawnow函数。如果你不想退出matlab,不要使用exit。您的programm脚本将在完成后自动停止while循环:

x = 1:10; 
plot(x,x); 
while ~isempty(findall(0,'Type','Figure')) 
    drawnow 
end 
+0

感谢您的回答。这将适用于多个数字窗口? – petobens

+0

是的。如果关闭它们,它将停止工作。 –

+1

我会在循环中放置一个“暂停(0.01)”来使CPU能够处理其他线程 – gregswiss

3

而是在环路探询,你可以使用waitfor

f(1)=figure(); 
f(2)=figure(); 
x = 1:10; 
plot(x,x); 
drawnow; 
for ix=1:numel(f) 
    waitfor(f(ix)); 
end 
+0

感谢您的回答。这将适用于多个数字窗口? – petobens

+1

为循环中的每个图形调用'waitfor'。 – Daniel

+0

你能否更新你的答案显示这个循环?谢谢 – petobens