1function tranSysState = sampleSys(self, numSamples)
2% TRANSYSSTATE = SAMPLESYS(NUMSAMPLES)
3options = self.getOptions;
5if isempty(self.result) || ~isfield(self.result,
'infGen')
8[infGen, eventFilt] = getGenerator(self);
9stateSpace = getStateSpace(self);
10stateSpaceAggr = getStateSpaceAggr(self);
13nst = cumsum([1,cellfun(@length,initState)']);
14s0 = cell2mat(initState(:)');
17pi0 = zeros(1,size(stateSpace,1));
18pi0(matchrow(stateSpace,s0))=1;
20% filter all CTMC events as a marked Markovian arrival process
21D1 = cellsum(eventFilt);
23MMAP = mmap_normalize([{D0},{D1},eventFilt(:)
']);
26[sjt,event,~,~,sts] = mmap_sample(MMAP,numSamples, pi0);
29tranSysState = struct();
30tranSysState.handle = self.model.getStatefulNodes';
31tranSysState.t = cumsum([0,sjt(1:end-1)
']');
32for isf=1:length(initState)
33 tranSysState.state{isf} = stateSpace(sts,(nst(isf):nst(isf+1)-1));
36tranSysState.event = {};
37for e = 1:length(event)
38 for a=1:length(sn.sync{event(e)}.active)
39 tranSysState.event{end+1} = sn.sync{event(e)}.active{a};
40 tranSysState.event{end}.t = tranSysState.t(e);
42 for p=1:length(sn.sync{event(e)}.passive)
43 tranSysState.event{end+1} = sn.sync{event(e)}.passive{p};
44 tranSysState.event{end}.t = tranSysState.t(e);
47tranSysState.isaggregate =
false;