Рассмотрим следующие MCVE:
B = 50 - randi(100,100,100,4);
% Show each of the 4 layers of A for 0.50 seconds each, and save image frames:
fig=figure();
for idx = 1:size(B,3)
imagesc( B(:,:,idx) ); title(num2str(idx)); caxis([-50 50]); drawnow;
frame = getframe(fig);
img{idx} = frame2im(frame);
pause(0.50);
end
% Write a .gif file, show each image 1 second in infinite loop.
filename = 'whatsgoingon.gif'; dlyt = 1;
for idx=1:length(img)
[A,map]=rgb2ind(img{idx},256);
if idx==1; imwrite(A,map,filename,'gif','LoopCount',Inf,'DelayTime',dlyt);
else; imwrite(A,map,filename,'gif','WriteMode','append','DelayTime',dlyt);
end
end
Каждое изображение показывает слой куба B
. Я написал некоторый код, чтобы сделать из него файл .gif, чтобы его было легче распространять. Проблема, с которой я сталкиваюсь, заключается в следующем: каждый раз, когда я открываю файл .gif, он пропускает второй кадр (т. Е. Связанный с B (:,:, 2)) в первом цикле показа. По сути, .gif показывает следующие кадры в хронологическом порядке:
1, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4 и т. Д.
Это не огромная проблема, просто немного смущает, когда я делюсь одними результатами с другими. Кажется, я не могу найти ни одной темы по аналогичной проблеме (ни здесь, ни на веб-сайте Matlab), поэтому мне было бы очень любопытно услышать, если вы видите ту же проблему, когда вы делаете GIF с использованием приведенного выше кода, и если бы вы есть идеи, откуда он взялся.
К вашему сведению: я использую Matlab R2018a на компьютере с Windows.
РЕДАКТИРОВАТЬ: вот пример изображения, которое я создал:
![here's a gif I create in this manner:](https://i.stack.imgur.com/xxs9Q.gif)