1function demandEst = infer_minps_setup(data, initSample, sampleSize, V, model, node)
2% MAIN_MINPS setups the input data
for the MINPS estimation method and calls it
4% Copyright (c) 2012-2014, Imperial College London
9sampleNumber = zeros(1,R+1);
11 sampleNumber(k) = size(data{3,k},1);
15newR = sum(sampleNumber>0);
16data2 = cell(6,newR+1);
22 data2{j,r} = data{j,k};
29% get queue length at arrival times
30qls = infer_get_qlen_arrival(data);
32rt = []; %response times
38 class = [class; k*ones(size(data{4,k},1), 1)];
40 at = [at; data{3,k}/1000];
43% sort data to include data from all
classes in the data set
44allTimes = [at rt
class ql];
45allTimes = sortrows(allTimes,1);
50ql = allTimes(:,4:end);
53 sampleSize = size(ql,1);
57firstSample = initSample;
58finalSample = initSample+sampleSize-1;
59sampleSet = firstSample:finalSample;
61qlExp = ql(sampleSet,:);
63classExp = class(sampleSet);
64numClassExp = hist(classExp, 1:R);
66% remove samples with zero response times
70 classExp = classExp(valid);
71 qlExp = qlExp(valid,:);
74% Estimate number of threads
76% Estimate mean number of busy processors
77numNotProcExp = Wexp - sum(sum(ql,1),2)/size(ql,1);
78numNotProcExp = numNotProcExp/R;
79% Estimate think-time rates
82 lambda(k) = min(1E6, (numClassExp(k)/(at(finalSample) + rt(finalSample) - at(firstSample)) )/numNotProcExp);
89demandEst = infer_minps(model, node, rtExp, classExp, qlExp);