我正在做这样的事情:
a = [1:100];
for i=1:100,
plot([1:i], a(1:i));
end
Run Code Online (Sandbox Code Playgroud)
我的问题是在循环结束之前不会显示绘图.如何在每次迭代中显示/更新绘图?
Jon*_*nas 21
使用DRAWNOW
a = [1:100];
for i=1:100,
plot([1:i], a(1:i));
drawnow
end
Run Code Online (Sandbox Code Playgroud)
或者,您可能希望查看文件交换中的ANYMATE.
如果您只想在不保存动画的情况下将其可视化,另一种方法是使用refreshdata
而不是plot
后续绘图.您仍然需要呼叫drawnow
它在屏幕上更新.
要么使用
set(fig_handle,'XData',new_xdata_array)
set(fig_handle,'YData',new_ydata_array)
refreshdata
drawnow
Run Code Online (Sandbox Code Playgroud)
或使用
set(fig_handle,'XDataSource',xdata_array)
set(fig_handle,'YDataSource',ydata_array)
%call this whenever xdata_array and ydata_array are assigned new values to see it updated in the plot
refreshdata
drawnow
Run Code Online (Sandbox Code Playgroud)
对于您的示例,这可能看起来像:
a=[1:100];
figure;
h=plot(1,a(1));
for i=2:100
set(h,'XData',[1:i])
set(h,'YData',a(1:i))
refreshdata
drawnow
end
Run Code Online (Sandbox Code Playgroud)
它对于简单的线图(对于它plot(); drawnow;
来说更简单,更快)并不是那么有用,但是当你需要创建涉及多个绘图类型的更复杂的图时,这可能是有用的.