0

首先,我要感谢所有做出贡献的人。

我想动画一条线,在它的末端有一个标记,从原点到沿着轨迹的 XYZ 值。我的轨迹包含 2000 个 XYZ 值并在半圆中移动。但是,我似乎无法删除前一行。换句话说,Matlab 在每个 XYZ 值处画线。请检查我的代码并告诉我我做错了什么。

figure(1);
grid on;
xlim([-2.5,2.5]);
xlabel('X Axis');
ylim([-2.5,2.5]);
ylabel('Y Axis');
zlim([-2.5,2.5]);
zlabel('Z Axis');

set(gcf,'Renderer','OpenGL');
h = plot(x(1),y(1),z(1),0,'o','MarkerSize',10,'MarkerFaceColor','b');
set(h,'EraseMode','normal');

i = 1;

while i <= length(x)  
  set(h,'XData',x(i));
  set(h,'YData',y(i));
  set(h,'ZData',z(i));
  line([0 x(i)],[0 y(i)],[0 z(i)],'LineWidth',2,'EraseMode','normal');
  drawnow;
  i = i + 1;
end
4

2 回答 2

0

您正在寻找的是在绘制下一次迭代之前清除图形的内容。因此,请在开始时尝试clf在您的 while 循环中使用。

这是文档:clf参考 - Mathworks

于 2013-03-08T06:58:31.100 回答
0

你不要删除旧的。

使用类似的东西:

delete(l)  % if it exists  
l = line([0 x(i)],[0 y(i)],[0 ....
于 2013-03-08T08:11:06.483 回答