function GG = fullgamx(n,A0,xx,mask) global locm locm = mask; m = size(A0,1); global A C C = zeros(m,1); C(2)=1; A = A0; GG = []; for k=1:m gam = gamma(n,[k xx{k}]); GG = [GG; gam']; end return function r = F(x) global locm r = applymask(locm,x); return function r = applymask(mask,x) n = length(x); r = 0; for i=1:n r = r + ismember(x(i),mask{i}); end return function p = p_0(x) global C p = C(x); return function p = p_n(i,j,n) % primitive cond prob global A if i p = A(i,j,n); else p = 1; end return function gam = gamma(n,x) %global nstate global A [m,m,t] = size(A); nstate = m; gam = zeros(nstate,1); if (n==2) for k=1:nstate for x1=1:nstate gam(k) = gam(k) + p_0(x1)*(p_n(k ,1 ,1)*F([1 k x]) - p_n(k ,x1,1)*F([x1 k x])); end end else for k=1:nstate gamkx = gamma(n-1,[k x]); for k1=1:nstate gam(k) = gam(k) + p_n(k,k1,n-1) * gamkx(k1); end end end return