fun = @(block_struct) max(block_struct.data(:));
b = blockproc (a, [X Y], fun);
a=rand(5000);
X=4; Y=4; %window sizes
tic
fun = @(block_struct) max(block_struct.data(:));
b = blockproc (a, [X Y], fun);
toc
%Elapsed time is 19.764354 seconds.
tic
b=sepblockfun(a,[X,Y],'max');
toc
%Elapsed time is 0.092457 seconds.