В этом примере показано, как перемещать группу объектов вместе вдоль линии с помощью преобразований.
Постройте график синусоидальной волны и установите режим пределов оси в ручной режим, чтобы избежать повторного вычисления пределов во время цикла анимации.
x = linspace(-6,6,1000);
y = sin(x);
plot(x,y)
axis manual

Создайте объект преобразования и задайте для него родительские оси. Печать маркера и текстовой аннотации в начале строки. Используйте num2str функция для преобразования значения y в этой точке в текст. Сгруппируйте два объекта, установив их родительские объекты для объекта преобразования.
ax = gca; h = hgtransform('Parent',ax); hold on plot(x(1),y(1),'o','Parent',h); hold off t = text(x(1),y(1),num2str(y(1)),'Parent',h,... 'VerticalAlignment','top','FontSize',14);

Переместите маркер и текст в каждую последующую точку вдоль линии, обновив Matrix свойства объекта преобразования. Используйте значения x и y следующей точки в прямой и первой точки в прямой, чтобы определить матрицу преобразования. Обновите текст, чтобы он соответствовал значению y при перемещении вдоль линии. Использовать drawnow для отображения обновлений на экране после каждой итерации.
for k = 2:length(x) m = makehgtform('translate',x(k)-x(1),y(k)-y(1),0); h.Matrix = m; t.String = num2str(y(k)); drawnow end

Анимация показывает маркер и текст, перемещающиеся вместе вдоль линии.
Если у вас много данных, вы можете использовать drawnow limitrate вместо drawnow для более быстрой анимации. Однако drawnow limitrate может не отображать каждое обновление на экране.
axis | drawnow | hgtransform | makehgtform | plot | text