function [vol avi mov] = vol2avi(vol, avi, fps, ax, step, rw, rev) if ~exist('vol', 'var') || isempty(vol) vol = spm_select(1, 'image'); end if ischar(vol) vol = spm_vol(vol); end if ~exist('avi', 'var') || isempty(avi) [pth fnm] = fileparts(vol.fname); avi = fullfile(pth, [fnm '.avi']); end if ~exist('fps', 'var') || isempty(fps) fps = 24; end if ~exist('ax', 'var') || isempty(ax) ax = 3; end if ~exist('step', 'var') || isempty(step) step = 1; end if ~exist('rw', 'var') || isempty(rw) rw = false; end if ~exist('rev', 'var') || isempty(rev) rev = false; end img = spm_read_vols(vol); f = figure; colormap gray dim = vol.dim(ax); n = 0; for d = 1:step:dim n = n + 1; switch ax case 1, slice = img(d, :, :); case 2, slice = img(:, d, :); case 3, slice = img(:, :, d); end slice = rot90(squeeze(slice)); imagesc(slice); axis image; axis off; mov(n) = getframe; end % rewind sequence if rw for d = dim-1:-step:2 n = n + 1; switch ax case 1, slice = img(d, :, :); case 2, slice = img(:, d, :); case 3, slice = img(:, :, d); end slice = rot90(squeeze(slice)); imagesc(slice); axis image; axis off; mov(n) = getframe; end end % reverse whole sequence (not very neatly...) if rev tmp = mov; N = length(mov); for n = 1:N mov(n) = tmp(N+1-n); end end movie2avi(mov, avi, 'FPS',fps); close(f);