在MATLAB中绘制循环内部时连续绘图

时间:2017-07-26 06:40:12

标签: matlab plot

我试图在MATLAB中动态绘制变量。我有一个需要随时间绘制的数组(状态集)。我尝试了绘图(时间,theta),其中θ是1 * 5数组。使用此命令,我得到一个错误,指出theta应该是标量,因为时间是标量。然后我尝试使用for-loop绘制(时间,theta(i))。这个问题是我在绘图上以离散的时间间隔获得数据点。但是我需要一个连续的情节。我想知道如何做到这一点。

2 个答案:

答案 0 :(得分:1)

绘图时需要使用hold on

例如:

time = 1;
theta = [1:100];
figure

for i=1:100

    plot(time, theta(i),'r.')
    hold on  %--> Keeps the previous data in your plot
    time = time + 1;

end

答案 1 :(得分:0)

让我们看看我是否直截了当。每个步骤都会更新时间,而theta是五个不同的变量,也会更新。这应该适合你:

% Use your own time variable
time = 1:100;

figure;    hold on;
h = cell(5,1);    % Handles of animated lines
colors = 'rgbkm'; % Colors of lines
for t = time
   theta = randn(5,1);
   if isempty(h{1})
       % Initialize plot
       for k = 1 : 5
           h{k} = animatedline(t , theta(k) , 'LineStyle' , '-' , 'Color' , colors(k));
       end
   else
       % Update plot with new data
       for k = 1 : 5
           addpoints(h{k}, t , theta(k));
       end
   end

   % Update plot
   drawnow
end

在R2014b中引入了对象animatedline。您仍然可以使用传统绘图执行类似操作,并在每个循环中更新行的XData和YData属性。