1function [alpha, A] = PHFromTraceByGFit (trace, orders)
6 % initial alpha and lambda
is such that the mean
is matched
7 alphav = ones(1,M) / M;
8 lambda = diag(orders) * (1:M)
';
9 trm = sum(trace)/length(trace);
10 inim = sum(alphav ./ (1:M));
11 lambda = lambda * inim / trm;
16 while abs(ologli-logli)>1e-7
20 Q(i,:) = (alphav(i)*(lambda(i)*trace).^(orders(i)-1) / factorial(orders(i)-1) * lambda(i)) .* exp(-lambda(i)*trace);
22 logli = sum(log(sum(Q,1))) / K
25 Q(i,:) = Q(i,:) ./ nor;
31 lambda = diag(orders)*v1 ./ v2;
39 alpha(ix) = alphav(i);
40 A(ix:ix+orders(i)-1, ix:ix+orders(i)-1) = lambda(i)*(diag(ones(1,orders(i)-1),1)-diag(ones(1,orders(i))));