我做这样的事情:情节MATLAB
a = [1:100];
for i=1:100,
plot([1:i], a(1:i));
end
我的问题是不显示的情节,直到循环结束。 如何在每次迭代中显示/更新绘图?
我做这样的事情:情节MATLAB
a = [1:100];
for i=1:100,
plot([1:i], a(1:i));
end
我的问题是不显示的情节,直到循环结束。 如何在每次迭代中显示/更新绘图?
如果您只想在不保存动画的情况下对其进行可视化,另一种方法是使用refreshdata
而不是plot
作为后续绘图。您仍需要拨打drawnow
才能在屏幕上进行更新。
要么使用
set(fig_handle,'XData',new_xdata_array)
set(fig_handle,'YData',new_ydata_array)
refreshdata
drawnow
或使用
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
为你的榜样,这可能是这样的:
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
这不是所有简单的线图是有用的(对于这plot(); drawnow;
更简单和更快),但是当你需要创建更复杂的数字涉及多ple plot类型,这可能很有用。
t = 0:.01:2*pi;
x = cos(2*t).*(cos(t).^2);
y = sin(2*t).*(sin(t).^2);
comet(x,y);
当的DrawNow是正确的答案,我认为一个人还可以在代码中的DrawNow的位置添加一个暂停(EPS)语句。当matlab进行暂停时,即使只是对于时间片的这个纳秒级分,它也会对图形进行刷新。 – 2010-05-10 10:27:19