我有一组(x,y)
坐标来描述物体的轨迹。我想使用GNU Octave为这个轨迹制作动画。
数据集非常大,所以如果我希望动画流畅,我将无法在每次迭代时重绘整个绘图。有什么功能可以让我“更新”情节而不是重绘它?
另外,我有另一组(vx,vy)
点,用于描述对象的速度。我希望我的动画轨迹能够加快速度。我应该使用什么函数让程序休眠几毫秒,以使轨迹以与对象相同的速度生成动画?
(我已经知道Octave有comet
之类的功能,但我需要编写自己的动画师。)
编辑:这是我到目前为止所拥有的。我预计这会跑得太快并要求我使用pause
,但它仍然很慢(x
和y
有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
答案 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”命令。保持图表将所有先前的数据保留在图表上,新数据将添加到顶部。