所以我有一段matlab代码(如下所示)绘制了几个数字,然后将它们保存为postscript文件(.ps)。这是一些代码:
for n = 1:6
threeD = figure;
plot3(x(:,1),x(:,2),x(:,3)),grid on;
print (gcf, '-depsc2', strcat('plot',num2str(n),'.ps'));
end
然后我们运行一个shell脚本将postscript文件转换为GIF文件,然后以0.10秒的延迟合并它们。
#!/bin/csh
# convert postscript to gif
foreach i ( plot*.ps )
perl pstogif $i $i.gif
end
# merge gifs in order
./gifmerge -10 `ls plot?.gif; ls plot??.gif; ls plot???.gif` > anim.gif
# change permissions
chmod 644 anim.gif
# now clean up
rm plot*.ps plot*.gif
但我在Windows上,我无法运行此脚本(如果可以的话,不安装我想避免的cygwin)。是否有另一种方法可以在matlab中制作gif电影,或者这是唯一的方法吗?如果这是唯一的方法,是否有替代cygwin方法或者是在Windows中运行shell脚本的唯一方法?
编辑:
以下是我对以下示例链接的尝试:
figure(1)
for n = 1:6
%Formualte a str for the title
str = sprintf('test%d', n);
[t,x]=ode45('test',[0.0:0.01:20],[initial(n,1), initial(n,2), initial(n,3)]);
%2D Plot
twoD = figure;
plot(x(:,1),x(:,2)),grid on;
drawnow
frame = getframe(1);
im = frame2im(frame);
[imind,cm] = rgb2ind(im,256);
name = sprintf('2D%d',n);
xlabel('x1(t)');
ylabel('x2(t)');
title(str);
if n == 1;
imwrite(imind,cm,'Test.gif','gif', 'Loopcount',inf);
else
imwrite(imind,cm,'Test.gif','gif','WriteMode','append');
end
end
这只是给我一个带有x和y轴,标题和标签但没有实际情节的情节。这只是一片空地。 Here's my gif file
答案 0 :(得分:0)
在MATLAB中完成所有工作:
figure(1);
for n = 1:6
clf;
[t,x] = ode45('test', [0.0:0.01:20], [initial(n,1), initial(n,2), initial(n,3)]);
plot(x(:,1),x(:,2));
grid on;
set(gcf, 'color', 'w');
export_fig test.tif -nocrop -append -a1
end
im2gif('test.tif', '-delay', 0.1);
您首先需要从MATLAB文件交换中下载export_fig和im2gif。