2013-03-08 91 views
0

首先,我想感谢所有参与贡献的人。Matlab中的线条动画

我想要一条线,在它的末端有一个标记,从原点到轨迹上的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 

回答

0

你不删除旧的。

使用类似:

delete(l) % if it exists 
l = line([0 x(i)],[0 y(i)],[0 .... 
+0

谢谢,这个作品完美 – 2013-03-09 07:06:03

0

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

下面是文档:clf reference - Mathworks

+0

我不断收到错误“错误使用handle.handle /套 无效或删除的对象。” – 2013-03-09 07:04:46