我正在做类似于这样的事情:
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;
更为简单和快速),但当您需要创建涉及多种绘图类型的复杂图形时,这将是非常有用的。
以下内容来自comet.m的文档
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));
这是一个例子......
很多时候你并不需要在循环中绘制图形