我試圖創建一個包含主GUI的程序,它可以調用幾個獨立的GUI來顯示不斷更新的「實時」不同數據。但是,似乎只有一個GUI中的圖可以同時更新。同一GUI中的多個軸可以同時更新。但是,如果打開兩個GUI,則一次只能更新一個GUI中的座標軸,而另一個GUI中的座標軸「保持」,直到另一個GUI停止嘗試連續繪圖。在不同的窗口中同時顯示不斷更新圖
作爲這個問題的一個簡單測試,我創建了一個由單軸標記'plotAxes'和一個togglebutton組成的GUI。當切換按鈕是「沮喪」,隨機數據中使用的代碼的軸線連續地繪製:
xData = linspace(1,20,20);
while(get(hObject,'Value'))
yData = rand(20,1);
plot(handles.plotAxes,xData,yData);
drawnow;
end
隨着「gui_Singleton」參數設置爲0,我打開該GUI的兩個實例。如果我切換GUI A開始繪圖,連續隨機數據顯示在軸上。如果我然後切換GUI B進行繪圖,GUI A中的顯示將保留在最後一幀,並且GUI B開始顯示連續的隨機數據。當我取消切換GUI B繪圖按鈕時,GUI A將恢復連續繪圖。
有沒有什麼辦法允許在單獨的GUI窗口中的軸同時更新?我嘗試使用「批處理」命令在單獨的工作人員上運行GUI,但通過「批處理」啓動時不顯示GUI(我懷疑「批處理」不適用於與圖形相關的任何內容)。
謝謝。我目前無法對此進行測試,但我明白其中的原因。我認爲可以通過在主GUI中持續運行while循環來修改此過程,以便在多GUI情況下工作,並且只在當前存在的那些軸上繪圖。但是,在第一篇文章中,我忽略了另一個問題:當處於「連續繪圖」狀態時,Matlab中的其他函數也會凍結。例如,輸入命令行的命令在連續繪圖停止之前不會完成其評估。有任何解決這個問題的方法嗎? – user3112939
@ user3112939:你需要使用計時器對象 – Jonas