这是this question的后续行动,其中我试图同时为两个功能设置动画。提供的解决方案实际上满足了要求,因此我接受了它作为最终答案。
然而,当我尝试为更现实的案例实现类似的东西时,我遇到了其他问题。以下代码的目的是:
Stresses
的递增(线性)变化应力值的3d矩阵。第一个索引用于递增变化值,第二个索引对应于Depth
矩阵中的每个值,第三个索引对应于每个animatedline
对象Depth
的二维矩阵。每行对应一个animatedline
。绘制动画线并同时制作动画
%%PLOT AND ANIMATE
nlines = 2
h(1:nlines) = animatedline();
axis([-2.1,2,-10,0]);
for i = 1:100
for j = 1:3
Stresses(i,j,1) = (i/100)+j/3
Stresses(i,j,2) = -(i/100)-j/3
end
end
Depth = [0, -5, -10; 0,-6,-9]
for i = 1:size(Stresses,1)
for n = 1:nlines
n
currentStresses = Stresses(i,:,n)
h(n).clearpoints();
h(n).addpoints(currentStresses, Depth(n,:));
%pause(0.01)
end
drawnow
end
据我所知,这使用与previous问题类似的格式。包括pause
语句会导致同时发生但" Choppy"绘图。不包括pause
语句结果平滑,但"非同时"绘图。即它只绘制第二行。
我希望动画能够平滑并同时绘制两个animatedline
个对象。我怎么能做到这一点?
答案 0 :(得分:1)
对于同时绘图,您缺少hold
功能。
close all
%%PLOT AND ANIMATE
nlines = 2;
% optional: so that you can distinguish between the two lines
colors = {'r','b'};
for n = 1:nlines
h(n) = animatedline('color',colors{n});
end
axis([-2.1,2,-10,0]);
for i = 1:50
for j = 1:3
Stresses(i,j,1) = (i/100)+j/3;
Stresses(i,j,2) = -(i/100)-j/3;
end
end
Depth = [0, -5, -10; 0,-6,-9];
for i = 1:size(Stresses,1)
for n = 1:nlines
n;
currentStresses = Stresses(i,:,n);
h(n).clearpoints();
h(n).addpoints(currentStresses, Depth(n,:));
% wait for another line
hold on
end
% clear hold
hold off
drawnow
end
希望有所帮助!