function P=customproc5(m0,n0) global m n m = m0; n = n0; P = zeros(m^n,1); k = 1; v = 1/(n-k); p1 = v/2 + 1/2; [GIND1,BIND1] = getgbind(m,n,k); k = 2; v = 1/(n-k); p2 = v/2 + 1/2; [GIND2,BIND2] = getgbind(m,n,k); indgg = intersect(GIND1,GIND2); P(indgg) = p1*p2; indgb = intersect(GIND1,BIND2); P(indgb) = p1*(1-p2); indbg = intersect(BIND1,GIND2); P(indbg) = (1-p1)*p2; indbb = intersect(BIND1,BIND2); P(indbb) = (1-p1)*(1-p2); if 0 %r = rand(size(GIND)); %r = r/sum(r)*pk; %P(GIND) = r; P(GIND) = 0*P(GIND)+pk; %r = rand(size(BIND)); %r = r/sum(r)*(1-pk); %P(BIND) = r; P(BIND) = 0*P(BIND)+(1-pk); %P=P/sum(P); k = 2; v = 1/(n-k); %pk = v/2; global tha pk = tha; [GIND,BIND] = getgbind(m,n,k); P(GIND) = P(GIND)*pk; P(BIND) = P(BIND)*(1-pk); if 0 k = 3; v = 1/(n-k); pk = v/2 + 1/2; [GIND,BIND] = getgbind(m,n,k); P(GIND) = P(GIND)*pk; P(BIND) = P(BIND)*(1-pk); end end P = P+eps; sp = sum(P) P=P/sum(P); return function p = genP(z) global m n p = 1; for i=0:n-1 y = z(1:i); x = z(i+1); p = p * condP(i,x,y); end return function p = condP(i,x,y) % an explicit cond prob of X(i+1) = x % given X(1:i) = y if i==0 p = 1/2; return end if all(y(1:i-1)==0) p = (y(i)==x); else p = 1/2; end % trying to get diagonal band structure! return function d = binval(x) xstr = num2str(x); xstr = strrep(xstr,' ',''); d = bin2dec(xstr); return