function f = chunking(v,num) <v> is a vector <num> is desired length of a chunk return a cell vector of chunks. the last vector may have fewer than <num> elements. example: isequal(chunking(1:5,3),{1:3 4:5}) OR function [f,xbegin,xend] = chunking(v,num,n) <v> is a vector <num> is length of a chunk <n> is chunk number desired return the desired chunk in <f>. also return the beginning and ending indices associated with this chunk in <xbegin> and <xend>. example: isequal(chunking([4 2 3],2,2),3)
0001 function varargout = chunking(varargin) 0002 0003 % function f = chunking(v,num) 0004 % 0005 % <v> is a vector 0006 % <num> is desired length of a chunk 0007 % 0008 % return a cell vector of chunks. the last vector 0009 % may have fewer than <num> elements. 0010 % 0011 % example: 0012 % isequal(chunking(1:5,3),{1:3 4:5}) 0013 % 0014 % OR 0015 % 0016 % function [f,xbegin,xend] = chunking(v,num,n) 0017 % 0018 % <v> is a vector 0019 % <num> is length of a chunk 0020 % <n> is chunk number desired 0021 % 0022 % return the desired chunk in <f>. 0023 % also return the beginning and ending indices associated with 0024 % this chunk in <xbegin> and <xend>. 0025 % 0026 % example: 0027 % isequal(chunking([4 2 3],2,2),3) 0028 0029 switch length(varargin) 0030 0031 case 2 0032 v = varargin{1}; 0033 num = varargin{2}; 0034 0035 f = {}; 0036 for p=1:ceil(length(v)/num) 0037 f{p} = v((p-1)*num+1 : min(length(v),p*num)); 0038 end 0039 0040 varargout = {f}; 0041 0042 case 3 0043 v = varargin{1}; 0044 num = varargin{2}; 0045 n = varargin{3}; 0046 0047 xbegin = (n-1)*num+1; 0048 xend = min(length(v),n*num); 0049 f = v(xbegin:xend); 0050 0051 varargout = {f xbegin xend}; 0052 0053 end