使用matlab做动图

完整代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43

x=-4:0.2:4;
[XX,YY]=meshgrid(x);
r=sqrt(0.75*XX.^2+0.25*YY.^2)+eps;
Z=sin(r)./r;
surf(Z);

%生成每帧的图片数据
theAxes=axis;
theAxes(5)=-0.5;
theAxes(6)=2.5;
FRAM_NUM=10; %要生成的gif帧数
fmat=moviein(FRAM_NUM);
for j=1:FRAM_NUM;
surf(sin(2*pi*j/20)*Z,Z)
axis(theAxes)
fmat(:,j)=getframe;

%存为gif
picname=[num2str(j) '.fig'];%保存的文件名:如i=1时,picname=1.fig
%hold on % 写后面的字时,不把前面的字冲掉
saveas(gcf,picname)
end
%播放该动图
%movie(fmat,30)

%将动图的每一帧连接为gif文件
stepall=FRAM_NUM;
for i=1:stepall
picname=[num2str(i) '.fig'];
open(picname)
% set(gcf,'outerposition',get(0,'screensize'));% matlab窗口最大化
frame=getframe(gcf);
im=frame2im(frame);%制作gif文件,图像必须是index索引图像
[I,map]=rgb2ind(im,20);
if i==1
imwrite(I,map,'mygif.gif','gif', 'Loopcount',inf,'DelayTime',0.2);%第一次必须创建!
elseif i==stepall
imwrite(I,map,'mygif.gif','gif','WriteMode','append','DelayTime',0.2);
else
imwrite(I,map,'mygif.gif','gif','WriteMode','append','DelayTime',0.2);
end;
end