使用Octave制作动画轨迹

时间:2012-05-19 13:17:10

标签: animation plot octave

我有一组(x,y)坐标来描述物体的轨迹。我想使用GNU Octave为这个轨迹制作动画。

数据集非常大,所以如果我希望动画流畅,我将无法在每次迭代时重绘整个绘图。有什么功能可以让我“更新”情节而不是重绘它?

另外,我有另一组(vx,vy)点,用于描述对象的速度。我希望我的动画轨迹能够加快速度。我应该使用什么函数让程序休眠几毫秒,以使轨迹以与对象相同的速度生成动画?

(我已经知道Octave有comet之类的功能,但我需要编写自己的动画师。)


编辑:这是我到目前为止所拥有的。我预计这会跑得太快并要求我使用pause,但它仍然很慢(xy有10001个元素。)

bounds = [min(x) max(x) min(y) max(y)];
axis(bounds);

hold on
for k = 2 : length(x)
    plot(x(k-1:k), y(k-1:k));
    drawnow("expose");
end
hold off

2 个答案:

答案 0 :(得分:5)

您可以使用set命令更改某个绘图对象XData的{​​{1}}和YData数据:

h

h = plot(my_xdata(0),my_ydata(0)) for i_=1:length(my_xdata) set(h, 'YData', my_ydata(i_)) set(h, 'XData', my_xdata(i_)) pause(sqrt(vx(i_)^2+vy(i_)^2)) end 命令暂停pause(x)秒,可以小于1。

答案 1 :(得分:0)

我认为你正在寻找“hold”命令。保持图表将所有先前的数据保留在图表上,新数据将添加到顶部。