LINE Solver
MATLAB API documentation
Loading...
Searching...
No Matches
getSymbolicGenerator.m
1function [infGen, eventFilt, syncInfo, stateSpace, nodeStateSpace] = getSymbolicGenerator(self,invertSymbol,primeNumbers)
2if nargin<2
3 invertSymbol = false;
4end
5if nargin<3
6 primeNumbers = false;
7end
8if ~exist('sym')
9 line_error(mfilename,'This method requires MATLAB''s Symbolic Toolbox.');
10end
11if ~isdeployed
12 [~, F] = getGenerator(self);
13 [ stateSpace, nodeStateSpace] = getStateSpace(self);
14 infGen = sym(zeros(size(F{1})));
15 eventFilt = cell(1, length(F));
16 if primeNumbers % use prime numbers instead than symbolic variables
17 N=10;
18 xprime = primes(N);
19 while length(xprime) < length(F)
20 N = N*2;
21 xprime = primes(N);
22 end
23 end
24 for e = 1:length(F)
25 F{e} = full(F{e});
26 minF = min(min(F{e}(F{e}>0)));
27 if ~isempty(minF)
28 F{e} = F{e} / minF;
29 if invertSymbol
30 if ~primeNumbers
31 eventFilt{e} = F{e} / sym(['x',num2str(e)],'real');
32 else
33 eventFilt{e} = F{e} / xprime(e);
34 end
35 else
36 if ~primeNumbers
37 eventFilt{e} = F{e} * sym(['x',num2str(e)],'real');
38 else
39 eventFilt{e} = F{e} * xprime(e);
40 end
41 end
42 infGen = infGen + eventFilt{e};
43 end
44 end
45 infGen = ctmc_makeinfgen(infGen);
46 syncInfo = self.getStruct.sync;
47else
48 infGen = [];
49 eventFilt = [];
50 syncInfo = [];
51end
52end