annotate general/arrutils/interleave.m @ 13:03694e5c8365

Reorganised some high order list functions to correct class-based method dispatch; fixed some docs.
author samer
date Wed, 16 Jan 2013 12:12:34 +0000
parents e44f49929e56
children
rev   line source
samer@13 1 % interleave - interleave elements of an array
samer@13 2 %
samer@13 3 % interleave :: [[1,N]], [[1,M]] -> [[1,N+M]].
samer@13 4 %
samer@13 5 % interleave(A,B) interleaves the elements of A and B until there are
samer@13 6 % no elements left in one of them. The remaining elements of the other
samer@13 7 % are then appending.
samer@4 8 function z=interleave(x,y)
samer@4 9
samer@4 10 x=x(:);
samer@4 11 y=y(:);
samer@4 12
samer@4 13 nx=length(x);
samer@4 14 ny=length(y);
samer@4 15
samer@4 16 if nx>ny
samer@4 17 z(1:2:2*ny-1)=x(1:ny);
samer@4 18 z(2:2:2*ny)=y;
samer@4 19 z(2*ny+1:nx+ny)=x(ny+1:end);
samer@4 20 else
samer@4 21 z(1:2:2*nx-1)=x;
samer@4 22 z(2:2:2*nx)=y(1:nx);
samer@4 23 z(2*nx+1:nx+ny)=y(nx+1:end);
samer@4 24 end
samer@4 25