% generalchain_live.m simula una cadena de Markov "en vivo".

% Se debe definir antes el espacio de estados S, la distribución inicial mu y la matriz de transición P
% Esto puede ser hecho con otro .m o bien quitando los comentarios de las
% lineas que siguen.

% Abajo hay un ejemplo de como definir S, mu y P. También puede utilizarse
% ehrenfest.m

%S=[0 1 2 3 4 5 6 7 8 9 10];      % espacio de estados
%mu=[1 0 0];     % distribución inicial
%P=[[.6 .3 .1]; [.3 .3 .4]; [.4 .1 .5]];  % matriz de transición

% También se debe definir una funcion rando.m que es la F que genera la
% cadena. 

TS=length(S); % cantidad de estados
STS=10+20/TS % tamaño del Marker
n=500;           % cantidad de pasos a simular
x=zeros(1,n+1); % borrar datos viejos
t=0:n;          % tiempo

figure(1)
plot(S,zeros(1,length(S)),'s','MarkerFaceColor','g','MarkerEdgeColor','k','LineWidth',.1/TS,'MarkerSize',STS)
axis off
hold on
x(1)=rando(mu); % genera el primer valor de x (tiempo 0, no tiempo 1)
pause;
for i=1:n,
  x(i+1) = rando(P(x(i),:));
  plot(S(x(i)),0,'s','MarkerFaceColor','g','MarkerEdgeColor','k','LineWidth',.1/TS,'MarkerSize',STS)
  plot(S(x(i+1)),0,'s','MarkerFaceColor','r','MarkerEdgeColor','k','LineWidth',.1/TS,'MarkerSize',STS)
  drawnow
  pause(.1)
end

%plot(t, S(x));
%axis([0 n S(1) S(length(S))]);
