matlab动态图如何保存?

彗星状轨迹图代码如下:
x = cos(2*t).*(cos(t).^2);
y = sin(2*t).*(sin(t).^2);
comet(x,y);
pause(0.1);

  matlab动态图保存方法
  1、选择edit->copy figure,然后把图粘贴到word里
  2、选择File->export,可以把图存成各种格式(emf、bmp、eps、jpg、tif等)一般都是选择jpg或tif格式。
  不过个人觉得,第二种方法保存的图没有第一种的效果好,在word里可以看的出来追问

试过了,我的不行T-T

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-11-22
比如:
for i=1:300;

...........%画图代码
frame=getframe(gcf);
imind=frame2im(frame);
[imind,cm] = rgb2ind(imind,256);
if i==1
imwrite(imind,cm,'2.gif','gif', 'Loopcount',inf,'DelayTime',1e-4);%第一次必须创建!
else
imwrite(imind,cm,'2.gif','gif','WriteMode','append','DelayTime',1e-4);
end
end
其中,'2.gif'是图名追问

我单纯加了画图代码后确实能生成gif文件,但文件不能显示动图。所以我觉得应该是画图代码和for循环里的i有关,但还是不会写。可以再帮忙把完整的代码写给我看看吗?谢谢!
还是这个代码:
x = cos(2*t).*(cos(t).^2);
y = sin(2*t).*(sin(t).^2);
comet(x,y);
pause(0.1);

追答

t=0:0.02:10; Nt=size(t,2);
x = cos(2*t).*(cos(t).^2);
y = sin(2*t).*(sin(t).^2);
for i=1:Nt;
cla;hold on;
plot(x,y)
plot(x(i),y(i),'o');
frame=getframe(gcf);
imind=frame2im(frame);
[imind,cm] = rgb2ind(imind,256);
if i==1
imwrite(imind,cm,'2.gif','gif', 'Loopcount',inf,'DelayTime',1e-4);%第一次必须创建!
else
imwrite(imind,cm,'2.gif','gif','WriteMode','append','DelayTime',1e-4);
end
end

追问

非常感谢!!我再试了下三维彗星轨迹:
t=-10*pi:pi/250:10*pi; Nt=size(t,2);%t的列数
x=cos(2*t).^2.*sin(t);
y=sin(2*t).^2.*cos(t);
comet3(x,y,t);
for i=1:Nt;
……(后面和你写的一样)

可是图形窗口生成了除三维彗星轨迹图外的其他不知道是什么的图,gif文件保存的图是后者,这是哪里错了?谢谢!

追答

t=-10*pi:pi/250:10*pi; Nt=size(t,2);%t的列数
x=cos(2*t).^2.*sin(t);
y=sin(2*t).^2.*cos(t);
% comet3(x,y,t);

for i=1:20:Nt;
cla;hold on;
if i>500;
n=i-500:i;
else
n=1:i;
end
plot3(x(1:i),y(1:i),t(1:i),'color',[1, 0.6732, 0]);
plot3(x(n),y(n),t(n),'r');
plot3(x(i),y(i),t(i),'bo');
view(3);
axis([-1,1,min(y),max(y),-30,30]);
frame=getframe(gcf);
imind=frame2im(frame);
[imind,cm] = rgb2ind(imind,256);
if i==1
imwrite(imind,cm,'2.gif','gif', 'Loopcount',inf,'DelayTime',1e-4);%第一次必须创建!
else
imwrite(imind,cm,'2.gif','gif','WriteMode','append','DelayTime',1e-4);
end
end

本回答被提问者采纳
相似回答