1function [soujt,sts]=ctmc_simulate(Q, pi0, n)
3 r=rand(length(Q),1); r=r/sum(r);
5[~,st] = min(abs(rand-cumsum(pi0)));
6F = cumsum(Q - diag(diag(Q)),2); F=F./repmat(F(:,end),1,length(F));
8 sts(i) = st; soujt(i) = exprnd(-1/Q(st,st));
9 st = 1 + max([0,find( rand - F(st,:) > 0)]);