MATLAB中的实时绘图

时间:2010-06-25 05:48:08

标签: matlab animation plot graphics real-time

我是MATLAB的新手,我试图显示一些计算的实时图。我有一个N大小的向量,我一次使用m个值(比如m = N/4),所以我想绘制第一个m值,然后尽快计算第二个m值,让它们替换第一个图。

我的方法如下:

for i=1:N,
  ...
  //compute m
  ...
  plot(m);
end;

但它无法在每个循环中更新绘图并等待所有循环完成以绘制数据。我的问题是:我应该使用另一个函数而不是plot,还是可以在每个循环中添加一些延迟?

我认为必须有一种方法我不知道更新情节而不是每次重新绘制它。

2 个答案:

答案 0 :(得分:31)

作为Edric mentioned,您肯定希望在调用drawnow之后包含plot命令以强制更新图形。但是,有一种更有效,更平滑的动画方法,不涉及每次重建整个绘图。您可以简单地初始化绘图,捕获handle到绘图对象,然后使用set命令修改循环中该对象的属性。这是一个例子:

hLine = plot(nan);         % Initialize a plot line (which isn't displayed yet
                           %   because the values are NaN)
for i = 1:N                % Loop N times
  ...
  % Compute m here
  ...
  set(hLine, 'YData', m);  % Update the y data of the line
  drawnow                  % Force the graphics to update immediately
end

此外,在您的循环之前和致电plot之后,您可以设置axes properties的数量,如axes limits等,如果您希望轴保持固定并且不会使用绘制的每个新向量m更改其外观。

答案 1 :(得分:11)

您可以添加对DRAWNOW的调用以强制更新地图。请参阅reference page。请注意,DRAWNOW会导致刷新图形事件队列,这可能会导致执行回调等。

相关问题