我正在做这样的事情:
a = [1:100];
for i=1:100,
plot([1:i], a(1:i));
end
我的问题是在循环结束之前不会显示绘图。 如何在每次迭代中显示/更新绘图?
答案 0 :(得分:21)
答案 1 :(得分:5)
如果您只想在不保存动画的情况下将其可视化,另一种方法是使用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;
更简单,更快),它并不是那么有用,但是当你需要创建涉及多种绘图类型的更复杂的数字时,这可能很有用。
答案 2 :(得分:3)
t = 0:.01:2*pi;
x = cos(2*t).*(cos(t).^2);
y = sin(2*t).*(sin(t).^2);
comet(x,y);
答案 3 :(得分:0)
Matlab
使您可以自动执行变量的循环语句
x = 0.0:0.1:2*pi
plot(x,cos(x));
是一个例子……
很多时候,您并不需要真正画出一个循环