1.修改Line对象的属性值
可以直接利用plot函数返回的Line对象,通过向修改对象的XData,YData,ZData等属性,然后利用pause暂停画面,即可实现动态图片。同时,可以利用getframe函数捕获当前plot画面,写入成gif文件
% 画椭圆x*x/4 y*y/3 = 1的切线
a = 12*cos(0:2*acos(1/3):200*pi) 9i*sin(0:2*acos(1/3):200*pi);
figure();
h = plot(a(1));
axis equal
axis([-12,12,-9,9]);
[A,map] = rgb2ind(frame2im(getframe),256);
imwrite(A,map,1.gif,LoopCount,65535,DelayTime,0.1);forii =1:length(a)
h.XData(ii) = real(a(ii));
h.YData(ii) = imag(a(ii));
[A,map] = rgb2ind(frame2im(getframe),256);
imwrite(A,map,1.gif,WriteMode,append,DelayTime,0.1);
pause(on)
pause(0.2)
end
下面是导出的gif文件,与plot函数的画面一样。
2. animatedline创建动画线条
animatedline是一个动画线条对象,通过addpoints函数向其中添加点数,实现动画效果。
% 阿基米德螺线
theta =0:0.01:50;
y = theta.*exp(1i*theta);
figure();
h = animatedline(real(y(1)),imag(y(1)));
axis equal;
axis([-50,50,-50,50]);
axis off
[A,map] = rgb2ind(frame2im(getframe),256);
imwrite(A,map,2.gif,LoopCount,65535,DelayTime,0.01);fork =2:length(theta)
addpoints(h,real(y(k)),imag(y(k)));
drawnowif(mod(k,20)==0)
[A,map] = rgb2ind(frame2im(getframe),256);
imwrite(A,map,2.gif,WriteMode,append,DelayTime,0.01);
end
end
3.利用回调函数暂停动图
利用回调函数,可以在按下鼠标、键盘时触发特定操作。比如,下面命令能够实现在图中空白处单击鼠标键,暂停动图5秒。
% 替换1,2中的figure()语句figure(ButtonDownFcn,@(src,event) pause(5));
注意,上述命令只是在plot窗口暂停了5秒,gif文件中不会暂停。如果要实现gif文件中也暂停,可以使用timer对象,相对复杂很多。
感谢点赞、关注、收藏,您的支持是我回复的最大动力~哦
特别声明:文章来源用户上传并发布,本站只提供信息存储服务,不拥有所有权,内容仅供参考。