Мне удалось наконец получить эффект пульсации. Я анимировал его и хочу сохранить анимацию в файле GIF
.Сохраните анимированную деформацию как файл GIF в MATLAB
Но я получаю фиксированное изображение в файле 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
захватывает мой рабочий стол!
Спасибо, по крайней мере, он сохраняет анимацию, +1 – Rashid
@Kamtal Да, должен быть лучший способ сделать это, но я не могу заставить его работать, не используя 'close all'. Мне было бы интересно услышать, если вы придумаете более элегантное решение, чем этот «закрыть все». – Ayb4btu
Надеюсь, ты ответишь. Я думаю, проблема связана с 'warp', потому что мой код отлично работает с' plot'. – Rashid