生成可变数量的动画线并在Matlab中同时绘图

时间:2017-06-26 12:05:44

标签: matlab animation

我使用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声明了一个单独的对象。我真的不明白如何将它扩展到可变数量的动画线?

1 个答案:

答案 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循环。