我使用Matlab中的animatedline
对象改进了previous question中的代码。现在我创建两个动画线,代表不同的时间相关函数并同时绘制它们:
h1 = animatedline('Color' , 'r');
h2 = animatedline('Color' , 'b');
axis([0,4*pi,-1,1]);
x = linspace(0,4*pi,1000);
for k = 1:0.01:3
y1 = sin(k*x);
y2 = sin(k*x/2)
clearpoints(h1);
clearpoints(h2)
addpoints(h1,x,y1);
addpoints(h2,x,y2);
drawnow
end
我想进一步概括一下。我真正需要的是生成n
个动画行,其中n
由用户指定。然后我想在一个循环中为这些行设置动画,这个循环对动画行的数量有些敏感。
在上面的代码中,我为每个animatedline声明了一个单独的对象。我真的不明白如何将它扩展到可变数量的动画线?
答案 0 :(得分:1)
这似乎有效:
% User input
n = 5;
colors = lines(n);
h(1 : n) = animatedline();
for n_param = 1 : n
h(n_param) = animatedline('Color' , colors(n_param , :));
end
axis([0,4*pi,-1,1]);
x = linspace(0,4*pi,1000);
for k = 1:0.01:3
for n_param = 1 : n
% Do something with the parameter
y = sin(k*x/n_param);
h(n_param).clearpoints();
h(n_param).addpoints(x,y);
end
drawnow
end
我使用一个数组来存储动画线对象的手柄,用各种颜色设置它们并将它们绘制成for循环。