function fval = tryphi(A,phi) [m,m,T] = size(A); nn = T+1; n = T+1; global C C = zeros(m,1); C(2)=1; global nstate lenseq nstate = m; lenseq = n; adim = m^2*T; fdim = m^nn; xdim = adim + fdim; x = [A(:); phi(:)]; fval = sqrt(abs(myobjm(x))); return function y = myobjm(x) global nstate lenseq global FN m = nstate; n = lenseq; T = lenseq-1; global GG adim = m^2*T; fdim = m^n; xdim = adim + fdim; global A %A = reshape(x,[m m T]); A = reshape(x(1:adim),[m m T]); FN{n} = reshape(x(adim+1:end),[1 m^n]); GG = []; for k=1:m gam = gamma(T,[k]); GG = [GG; gam']; end % GG(k,k') % summing across k' a = A(:,:,T); s = sum(sum(a.*GG)); y = -s^2; return function r = F(x) %r = length(find(x~=1)); %return global nstate lenseq = length(x); global FN FF = FN{lenseq}; ind = coord2ind(x,(repmat(nstate,1,lenseq))); r = FF(ind); 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