2013-03-08 2 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

Спасибо, это прекрасно работает –

0

Что вы ищете, так это очистить содержимое фигуры перед тем, как нарисовать следующую итерацию. Итак, попробуйте использовать clf в вашем цикле while в начале.

Вот документация: clf reference - Mathworks

+0

Я получаю сообщение об ошибке "Ошибка при помощи handle.handle/компл Invalid или удаленный объект." –

Смежные вопросы