Skip to content
Snippets Groups Projects
create_gif_5D.m 2.15 KiB
title1 = GIFNAME;
FIGDIR = BASIC.RESDIR;
GIFNAME = [FIGDIR, GIFNAME,'.gif'];

sz = size(FIELD);

% Setup figure frame
fig  = figure('Color','white','Position', [100, 100, sz(2)*400, 400]);
    for ij_ = 1:sz(2)
    subplot(100+sz(2)*10+ij_)
%         pclr = imagesc(X,Y,squeeze(FIELD(:,ij_,:,FRAMES(1))));
        pclr = imagesc(X,Y,squeeze(log(FIELD(:,ij_,:,FRAMES(1)))));
        xlabel('$k_r$');
        if ij_ == 1
            ylabel('$P$(max o. $k_z$)');
        else
            yticks([])
        end
        LEGEND = ['$|',FIELDNAME,'^{p',num2str(ij_-1),'}|$']; title(LEGEND);
    end
%     colormap gray
    axis tight manual % this ensures that getframe() returns a consistent size
    in      = 1;
    nbytes = fprintf(2,'frame %d/%d',in,numel(FIELD(1,1,1,:)));
    for n = FRAMES % loop over selected frames
%         scale = max(max(max(abs(FIELD(:,:,:,n)))));
        for ij_ = 1:sz(2)
            subplot(100+sz(2)*10+ij_)
            scale = max(max(max(abs(FIELD(:,ij_,:,n)))));
            pclr = imagesc(X,Y,squeeze(FIELD(:,ij_,:,n))/scale); caxis([0,1]);
%             pclr = imagesc(X,Y,squeeze(log(FIELD(:,ij_,:,n))));
            xlabel(XNAME);
            if ij_ == 1
                ylabel(YNAME);
            else
                yticks([])
            end
            LEGEND = ['$|',FIELDNAME,'^{p',num2str(ij_-1),'}|$']; 
            title([LEGEND,', amp = ',sprintf('%.1e',scale)]);
        end
        suptitle(['$t \approx$', sprintf('%.3d',ceil(T(n)))]);
        drawnow 
        % Capture the plot as an image 
        frame = getframe(fig); 
        im = frame2im(frame); 
        [imind,cm] = rgb2ind(im,32); 
        % Write to the GIF File 
        if in == 1 
          imwrite(imind,cm,GIFNAME,'gif', 'Loopcount',inf); 
        else 
          imwrite(imind,cm,GIFNAME,'gif','WriteMode','append', 'DelayTime',DELAY); 
        end 
        % terminal info
        while nbytes > 0
          fprintf('\b')
          nbytes = nbytes - 1;
        end
        nbytes = fprintf(2,'frame %d/%d',n,numel(FIELD(1,1,1,:)));
        in = in + 1;
    end
    disp(' ')
    disp(['Gif saved @ : ',GIFNAME])