wolffd@0: function varargout = partitionData(Ndata, varargin) wolffd@0: % PARTITIONDATA Partition a vector of indices into random sets wolffd@0: % [a,b,c,...] = partitionData(N, 0.3, 0.2, 0.5, ...) wolffd@0: % wolffd@0: % Examples: wolffd@0: % [a,b,c]=partitionData(105,0.3,0.2,0.5); wolffd@0: % a= 1:30, b=32:52, c=52:105 (last bin gets all the left over) wolffd@0: wolffd@0: Npartitions = length(varargin); wolffd@0: perm = randperm(Ndata); wolffd@0: %perm = 1:Ndata; wolffd@0: ndx = 1; wolffd@0: for i=1:Npartitions wolffd@0: pc(i) = varargin{i}; wolffd@0: Nbin(i) = fix(Ndata*pc(i)); wolffd@0: low(i) = ndx; wolffd@0: if i==Npartitions wolffd@0: high(i) = Ndata; wolffd@0: else wolffd@0: high(i) = low(i)+Nbin(i)-1; wolffd@0: end wolffd@0: varargout{i} = perm(low(i):high(i)); wolffd@0: ndx = ndx+Nbin(i); wolffd@0: end wolffd@0: