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