function x=simulering(startvarde,P,n); % x=simulering(startvarde,P,n); % Simulerar en Markovkedja. % Indata: startvarde är numret på starttillståndet % Övergangsmatris (P) % Simuleringslängd (n) % Utdata: Vektor med processens värden från 1 till n. % Startvärdet anses vara för tidpunkt 1. % Anders Svensson 941102 % Finn Lindgren 981109,991124 [ok,msg]=pchk(2,P); if ~ok error(msg) end [a,b]=size(P); % Antal tillstand if (startvarde<0) | (startvarde>a) error('Otillåtet startvärde.') end x=zeros(1,n); % Skapar process-vektorn x(1)=startvarde; % Startvardet vid tp=1 for i=1:n-1 r=rand(1,1); % Slumpen i processen level=cumsum(P(x(i),:)); % Fordelningsfunktion for tillst.i j=1; while r>level(j) % Vilket tillstand blir det? j=j+1; end; if j>a x(i+1)=a % Tar hand om ev. avrundningsfel else x(i+1)=j; % Det blev tillstand j end; end;