I will use an example movie as shown in the documentation .
Suppose you have a bunch of frames:
figure('Renderer','zbuffer') Z = peaks; surf(Z); axis tight set(gca,'NextPlot','replaceChildren'); % Preallocate the struct array for the struct returned by getframe F(20) = struct('cdata',[],'colormap',[]); % Record the movie for j = 1:20 surf(.01+sin(2*pi*j/20)*Z,Z) F(j) = getframe; end
At the end of the help movie it says:
MOVIE (H, M, N, FPS, LOC) defines the place to play the movie in, relative to the lower left corner of the H object and in pixels, regardless of the value of the Units object property. LOC = [XY not used unused]. LOC is a 4-element vector position of which only the X and Y coordinates are used (the movie is played using the width and height at which it was recorded).
Thus, it is not possible to display a movie of a larger size than when recording. You will have to explode the pixels to display them at a larger size:
% blow up the pixels newCdata = cellfun(@(x) x(... repmat(1:size(x,1),N,1), ... % like kron, but then repmat(1:size(x,2), N,1), :), ... % a bit faster, and suited {F.cdata}, 'UniformOutput', false); % for 3D arrays % assign all new data back to the movie [F.cdata] = newCdata{:}; % and play the resized movie movie(F,10)
Please note that this will not win reading prizes, so if you intend to use it, provide a comment describing what it does.