64 error(
" Total range value must be specified. ");
68 ip.addParamValue(
'Max',[]);
69 ip.addParamValue(
'Num',[]);
70 ip.parse(varargin[:]);
73 pos = 0:res.Max:total;
77 this.np= length(pos)-1;
79 elseif ~isempty(res.Num)
81 error(
" Cannot have more parts than total elements ");
84 sizes = ones(1,this.np)*floor(total/res.Num);
85 rest = mod(total,res.Num);
87 sizes(1:rest) = sizes(1:rest)+1;
89 this.partpos= [0 cumsum(sizes)];
91 error(
" You must specify either a maximum part size or the number of parts. ");
104 error(
" Only %d parts present. ",this.np);
106 pt = this.partpos(nr)+1:this.partpos(nr+1);
115 res = res && rs.getNumParts == 1;
116 res = res && isequal(1:1000,rs.getPart(1));
119 res = res && rs.getNumParts == 4;
120 res = res && isequal(1:250,rs.getPart(1));
121 res = res && isequal(751:1000,rs.getPart(4));
124 res = res && rs.getNumParts == 5;
125 res = res && isequal(1:250,rs.getPart(1));
126 res = res && isequal(751:1000,rs.getPart(4));
127 res = res && isequal(1001:1001,rs.getPart(5));
130 res = res && rs.getNumParts == 6;
133 res = res && rs.getNumParts == 5;
136 res = res && rs.getNumParts == 5;
137 res = res && isequal(1:21,rs.getPart(1));
138 res = res && isequal(22:42,rs.getPart(2));
139 res = res && isequal(43:63,rs.getPart(3));
140 res = res && isequal(64:84,rs.getPart(4));
141 res = res && isequal(85:100,rs.getPart(5));
144 res = res && isequal(1:2,rs.getPart(1));
145 res = res && isequal(3:4,rs.getPart(2));
146 res = res && isequal(5,rs.getPart(3));
147 res = res && isequal(6,rs.getPart(4));
150 res = res && isequal(1:3,rs.getPart(1));
151 res = res && isequal(4:5,rs.getPart(2));
152 res = res && isequal(6:7,rs.getPart(3));
153 res = res && isequal(8:9,rs.getPart(4));
Matlab's base handle class (documentation generation substitute)
A variable number of input arguments.
function pt = getPart(nr)
RangeSplitter(total, varargin)
function np = getNumParts()
static function res = test_RangeSplitter()