2015-10-22 83 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