我终于可以设法获得连锁反应。我为它制作了动画并想将动画保存到GIF
文件中。
gif
但是我在文件中得到了一个固定的图像。
动画在 MATLAB 中效果很好,但我不知道为什么它不会被保存。
im = imread('peppers.png');
[m,n,~] = size(im);
n = linspace(-4 * pi,4 * pi,n);
m = linspace(-4 * pi,4 * pi,m);
[X,Y] = meshgrid(m,n);
d = (X .^ 2 + Y .^ 2) .^ .5;
d = d / max(d(:));
d = (d - .5) * 2 * pi;
j = 1;
figure(1);
for i = 0 : .2 : 2 * pi
Z = cos(2 * d + i) .* exp(-.01 .* d);
h = warp(X,Y,Z,im);
axis equal; axis off;
f = getframe;
[I,~] = frame2im(f);
[I,cm] = rgb2ind(I,256);
if j == 1
imwrite(I,cm,'B.gif','gif', 'Loopcount',inf);
else
imwrite(I,'B.gif','gif','WriteMode','append','DelayTime',1/24);
end
j = 0;
end
问题 1我怎样才能保存它(或者当前代码有什么问题)?
问题2如何以没有白色背景的方式保存它?
(例如,view([0 45])
带有一点缩放)
谢谢,
编辑感谢@Ayb4btu,我做了一些改进,
但是使用close all
会减慢速度,甚至有时会getframe
捕获我的桌面!