Matlab中的动画绘图

3
我正在尝试创建一个三角形的动画图,最终结果应该是十个三角形,然后是两个更大的三角形,最后是一条直线。使用matlab文档,我得到了下面的代码,可以生成一个动画正弦图:
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))更改为三角形时,情况变得更糟了。是否有更好的方法来制作动画图或至少调整速度?(如果速度不取决于计算机)

2个回答

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

速度提升的幅度较小。如果需要更快的速度,可能需要减少点数。

0
您可以检查comet函数来对曲线进行动画处理:
t = linspace(0,4*pi,2000);
comet(t, sin(t));

使用曲线进行动画制作会更加流畅和简单(请参阅文档)。 此外,对于3D曲线,您可以使用comet3


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接