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