如何在matlab中进行动画绘制
我想知道是否有人知道如何制作动画情节 x=(1000点数据集) y=(1000点数据集) 绘图(x,y) 最大的问题是,这些是我试图绘制的数据集,或者x,y坐标,而不是我知道如何通过动画绘制的函数 我试着在for循环中做帧,但它给了我点,并且没有把它们连接在一个线图中,所以我不能真正地观察被描绘出来的路径 我用的代码是如何在matlab中进行动画绘制,matlab,animation,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 看起来你很接近。
for i = 1:length(DATASET1)
pause(0.1)
plot(DATASET1(i),DATASET2(i))
draw on
end
看起来你很接近。但不确定
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
如果您希望绘图逐点“增长”:最简单的方法是创建一个空绘图,然后在每次迭代时更新其
XData
和YData
属性:
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
下面是一个示例1,使用DATASET1=1:100获得;数据集2=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
自R2014b以来,您可以使用annimatedline
对象(和),这意味着可以很好地处理动画图形。基本上,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
您尝试的代码中有哪些不起作用?这不是绘图命令。。。。您应该编辑帖子(标签下方有链接),以包含到目前为止所有的代码。您可以通过单击{}
按钮、按CTRL-K
或将代码缩进4个空格来设置代码格式感谢您没有这样做..由于某些原因,我无法在注释中使用该格式的代码。如果我去回答这个问题,我可以,但我必须等8个小时才能回答。。抱歉,我将尝试将其包含在我的问题中。您最好将其编辑到问题中,而不是在评论中发布:-)很好地解决了您的问题非常感谢您的帮助。。由于某些原因,它不会做我的绘图我修改了它设置x=DATASET1和y=DATASET2轴正在向上移动,但没有在轴上绘制任何东西。最大的问题是我可以得到要更新的“点”,但它不会形成一个折线图,让我看到在循环退出后创建的路径-绘图(x,y,'-'))
@branny12000如果代码对您有效,请告诉我。我会相应地更新我的解决方案。也许原来的“利用
”是有意的。这通常需要告诉Matlab刷新图形事件队列,并强制它现在绘制绘图。但是,在代码中不需要drawnow
,因为它是由pause
@Divakar-Yep隐式调用的。我用过,太酷了!只是为了分享动画gif你有我的+1@natan谢谢我通常讨厌动画GIF太分散注意力。。。但我无法抗拒:-)@SanthanSalai谢谢!