function A=readCyclic( M, N, basename, sw, m, n ) %Reads in from a 2D cyclic (Cartesian) distribution %Expects files .s, s ranging from 0 to M*N-1. %Example: readCyclic( M, N, 'pi' ); % uses s=i+j*M transformation, % readCyclic( M, N, 'pi', 1 ); % uses s=i*N+j transformation. % readCyclic( M, N, 'pi', 0/1, m, n ); % specifies matrix size (if m%M!=0 or n%N!=0) % (if n is unspecified, n=1 is assumed) if( nargin<4 ) sw=0; end if( nargin>4 ) if( nargin<6 ) n=1; end end if( nargin < 5 ) filename=sprintf('%s.0', basename); test=dlmread(filename); m=M*size(test,1); n=N*size(test,2); end A=zeros(m,n); if sw==0 for i=1:M for j=1:N s=(i-1)+(j-1)*M; dlmr=dlmread(sprintf('%s.%d', basename, s)); A(i:M:m,j:N:n)=dlmr; end end else %sw==1 s=0; for i=1:M for j=1:N dlmr=dlmread(sprintf('%s.%d', basename, s)); A(i:M:m,j:N:n)=dlmr; s=s+1; end end end end