2017-02-20 38 views
1

請問在Matlab中DRAWNOW的問題可以幫我一下嗎?在Matlab上畫圖:它存儲圖或存儲變量?

當我們在Matlab中使用drawnow時,會發生什麼?

它存儲圖前面,圖形的,然後繪製在同一圖下一個部分的,圖?

或者它忘記了整個前面的圖並繪製了實際新圖(包括上一個和下一個部分)?

這兩種方法都顯示相同的效果:動態圖。但我想知道里面發生了什麼。

謝謝!

回答

6

drawnow確保MATLAB停止執行任何操作並在屏幕上繪製。

如果你

hold on 
for ii=1:1000 
    plot(ii,rand(1)); % assume complicated maths here 
end 

MATLAB會運行代碼併發送plot調用圖形引擎。但是,MATLAB忙於運行循環繪圖,因爲代碼優先於繪圖。

如果你

hold on 
for ii=1:1000 
    plot(ii,rand(1)); 
    drawnow; % Take a break, draw everything that you must before continuing 
end 

然後,隨着評論說,你暫時停止代碼的執行,繪製圖形管線的一切,然後繼續執行代碼。

drawnow對數字存儲與否是沒有影響的,這就是hold on的工作。

如果你擔心重繪整個事情,那麼請確保你看看setget圖形方法。通過確保圖形引擎不重繪/重新計算其他任何東西,可以使用它們getxdata,再次修改它和set


文檔爲hold功能:

https://uk.mathworks.com/help/matlab/ref/hold.html

+0

感謝您的支持迅速。 –

+0

@ThienNhat歡迎您。考慮接受asnwer有效,如果它幫助你 –

+1

我應該花一些時間來看看你的答案。謝謝。 –