【发布时间】:2010-05-10 02:51:06
【问题描述】:
我正在做这样的事情:
a = [1:100];
for i=1:100,
plot([1:i], a(1:i));
end
我的问题是直到循环完成后才会显示情节。 如何在每次迭代中显示/更新绘图?
【问题讨论】:
我正在做这样的事情:
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; 更简单、更快捷)来说,它并不是很有用,但是当您需要创建涉及多种绘图类型的更复杂的图形时,它会很有用。
【讨论】:
t = 0:.01:2*pi;
x = cos(2*t).*(cos(t).^2);
y = sin(2*t).*(sin(t).^2);
comet(x,y);
【讨论】:
Matlab 允许您为变量自动执行循环语句
x = 0.0:0.1:2*pi
plot(x,cos(x));
就是一个例子……
很多时候你真的不需要在循环中绘制
【讨论】: