【问题标题】:Animated plot in matlabmatlab中的动画情节
【发布时间】:2017-07-23 19:15:33
【问题描述】:

我正在尝试创建一个三角形的动画图,最终结果应该是十个三角形,然后是两个更大的三角形,然后是一条直线。使用matlab documentation,我最终得到了这个,这导致了一个动画罪情节:

h = animatedline;
axis([0 4*pi -1 1])
x = linspace(0,4*pi,2000);

for k = 1:length(x)
    y = sin(x(k));
    addpoints(h,x(k),y);
    drawnow
end

问题是情节真的很慢,一旦我将y=sin(x(k)) 更改为三角形,它就变得更糟了。有没有更好的方法来制作动画情节或至少调整速度? (如果速度不依赖于计算机)

【问题讨论】:

    标签: matlab animation plot


    【解决方案1】:

    你可以加快速度

    • 一次计算y 向量,而不是计算循环中的每个值。
    • 更新plotXDataYData 属性,而不是使用animatedline

    代码变成:

    h = plot(NaN,NaN);
    axis([0 4*pi -1 1])
    x = linspace(0,4*pi,2000);
    y = sin(x);
    
    for k = 1:length(x)
        set(h, 'XData', x(1:k), 'YData', y(1:k))
        drawnow
    end
    

    不过,速度上的增益很小。如果您需要更快的速度,您可能需要减少点数。

    【讨论】:

      【解决方案2】:

      您可以检查comet 函数来为曲线设置动画:

      t = linspace(0,4*pi,2000);
      comet(t, sin(t));
      

      对曲线进行动画处理会更平滑且更容易(参见其documentation)。 此外,对于 3d 曲线,您可以使用comet3

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-05-11
        • 1970-01-01
        • 1970-01-01
        • 2023-03-26
        • 2018-10-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多