如何在matlab中制作动画情节

bra*_*000 16 matlab animation

我想知道是否有人知道如何做x =(数据集1000点)的动画图y =(1000点的数据集)图(x,y)

最大的问题是这些是我试图绘制的数据集,或x,y坐标,而不是我知道如何通过动画绘制的函数.

我试图在for循环中做框架,但是它给了我点,并没有将它们连接到折线图中,所以我无法真正看到被追踪的路径.

我用的代码是

for i = 1:length(DATASET1)
pause(0.1)
plot(DATASET1(i),DATASET2(i))
draw on
end
Run Code Online (Sandbox Code Playgroud)

Lui*_*ndo 34

如果你想要的是让情节逐点"增长":最简单的方法是创建一个空图,然后在每次迭代时更新它XDataYData属性:

h = plot(NaN,NaN); %// initiallize plot. Get a handle to graphic object
axis([min(DATASET1) max(DATASET1) min(DATASET2) max(DATASET2)]); %// freeze axes
%// to their final size, to prevent Matlab from rescaling them dynamically 
for ii = 1:length(DATASET1)
    pause(0.01)
    set(h, 'XData', DATASET1(1:ii), 'YData', DATASET2(1:ii));
    drawnow %// you can probably remove this line, as pause already calls drawnow
end
Run Code Online (Sandbox Code Playgroud)

这是一个获得的例子1DATASET1 = 1:100; DATASET2 = sin((1:100)/6);

在此输入图像描述


1如果有人感兴趣,该图是一个动画gif,可以通过在循环内添加以下代码(取自此处)来创建drawnow:

  frame = getframe(1);
  im = frame2im(frame);
  [imind,cm] = rgb2ind(im,256);
  if ii == 1;
      imwrite(imind,cm,filename,'gif','Loopcount',inf);
  else
      imwrite(imind,cm,filename,'gif','WriteMode','append');
  end
Run Code Online (Sandbox Code Playgroud)


Div*_*kar 9

看起来你很亲密.不确定draw on是否有任何命令.

看看这里的代码是否能激发您解决问题 -

%// Sample x and y values assumed for demo.
x = 1:1000;
y = x.^2;

%// Plot starts here
figure,hold on

%// Set x and y limits of the plot
xlim([min(x(:)) max(x(:))])
ylim([min(y(:)) max(y(:))])

%// Plot point by point
for k = 1:numel(x)
    plot(x(k),y(k),'-') %// Choose your own marker here

    %// MATLAB pauses for 0.001 sec before moving on to execue the next 
    %%// instruction and thus creating animation effect
    pause(0.001);     
end
Run Code Online (Sandbox Code Playgroud)


mar*_*sei 5

从R2014b开始,您可以使用annimatedline对象(dochow-to)来处理动画图形.基本上,annimatedline对象具有向线添加新点addpoints功能,而不必重新定义现有点,以及clearpoints为更复杂的动画清除线的功能.

这是一个例子:

h = animatedline;
axis([0,4*pi,-1,1])

x = linspace(0,4*pi,1000);
y = sin(x);
for k = 1:length(x)  
    addpoints(h,x(k),y(k));
    drawnow
end
Run Code Online (Sandbox Code Playgroud)