function [b] = exch_c(a,o) [nx ny nt]=size(a); if nt == 1 elseif nt ~= 6 nt error('Must be tiled array (NxNx6)') end if nt == 6 & nx ~= ny [nx ny] error('Tiles must be square (NxNx6)') end if nt == 6 b=NaN*ones(nx+2*o,ny+2*o,6); b(o+1:o+nx,o+1:o+ny,:)=a; % Interior b(o+1:o+nx,o+ny+(1:o),1)=a(1:o,ny:-1:1,3)'; % N-odd b(o+1:o+nx,o+ny+(1:o),3)=a(1:o,ny:-1:1,5)'; % N-odd b(o+1:o+nx,o+ny+(1:o),5)=a(1:o,ny:-1:1,1)'; % N-odd b(o+1:o+nx,1:o,[1 3 5])=a(:,ny-o+1:ny,[6 2 4]); % S-odd b(o+nx+(1:o),o+1:o+ny,[1 3 5])=a(1:o,:,[2 4 6]); % E-odd b(1:o,o+1:o+ny,3)=a(nx:-1:1,ny-o+1:ny,1)'; % W-odd b(1:o,o+1:o+ny,5)=a(nx:-1:1,ny-o+1:ny,3)'; % W-odd b(1:o,o+1:o+ny,1)=a(nx:-1:1,ny-o+1:ny,5)'; % W-odd b(o+1:o+nx,o+ny+(1:o),[2 4 6])=a(:,1:o,[3 5 1]); % N-even b(o+1:o+nx,1:o,2)=a(nx-o+1:nx,ny:-1:1,6)'; % S-even b(o+1:o+nx,1:o,4)=a(nx-o+1:nx,ny:-1:1,2)'; % S-even b(o+1:o+nx,1:o,6)=a(nx-o+1:nx,ny:-1:1,4)'; % S-even b(o+nx+(1:o),o+1:o+ny,2)=a(nx:-1:1,1:o,4)'; % E-even b(o+nx+(1:o),o+1:o+ny,4)=a(nx:-1:1,1:o,6)'; % E-even b(o+nx+(1:o),o+1:o+ny,6)=a(nx:-1:1,1:o,2)'; % E-even b(1:o,o+1:o+ny,[2 4 6])=a(nx-o+1:nx,:,[1 3 5]); % W-even elseif nt == 1 b=NaN*ones(nx+2*o,ny+2*o); b(o+1:o+nx,o+1:o+ny)=a; % Interior %b(o+1:o+nx,o+ny+(1:o))=a(:,ny:-1:ny-o+1); % N %b(o+1:o+nx,1:o)=a(:,o:-1:1); % S b(o+nx+(1:o),:)=b(o+1:o+o,:); % E b(1:o,:)=b(o+nx-o+1:o+nx,:); % W end