1function tranSysState = sampleSysAggr(self, numSamples)
2% TRANSYSSTATE = SAMPLESYSAGGR(NUMSAMPLES)
3options = self.getOptions;
5if isempty(self.result) || ~isfield(self.result,
'infGen')
8[infGen, eventFilt] = getGenerator(self);
9stateSpace = getStateSpace(self);
10stateSpaceAggr = getStateSpaceAggr(self);
14nst = cumsum([1,cellfun(@length,initState)']);
15s0 = cell2mat(initState(:)');
18pi0 = zeros(1,size(stateSpace,1));
19pi0(matchrow(stateSpace,s0))=1;
21% filter all CTMC events as a marked Markovian arrival process
22D1 = cellsum(eventFilt);
24MMAP = mmap_normalize([{D0},{D1},eventFilt(:)
']);
27[sjt,event,~,~,sts] = mmap_sample(MMAP,numSamples, pi0);
30tranSysState = struct();
31tranSysState.handle = self.model.getStatefulNodes';
32tranSysState.t = cumsum([0,sjt(1:end-1)
']');
33for isf=1:length(initState)
34 tranSysState.state{isf} = stateSpace(sts,(nst(isf):nst(isf+1)-1));
35 [~,tranSysState.state{isf}] = State.toMarginal(sn,sn.statefulToNode(isf),tranSysState.state{isf});
38tranSysState.event = {};
39for e = 1:length(event)
40 for a=1:length(sn.sync{event(e)}.active)
41 tranSysState.event{end+1} = sn.sync{event(e)}.active{a};
42 tranSysState.event{end}.t = tranSysState.t(e);
44 for p=1:length(sn.sync{event(e)}.passive)
45 tranSysState.event{end+1} = sn.sync{event(e)}.passive{p};
46 tranSysState.event{end}.t = tranSysState.t(e);
49tranSysState.isaggregate =
true;