文档介绍:%function[chain,state]=markov(T,n,s0,V);%function[chain,state]=markov(T,n,s0,V);%chaingeneratesasimulationfromaMarkovchainofdimension%thesizeofT%%Tistransitionmatrix%nisnumberofperiodstosimulate%s0isinitialstate(initialprobabilities)%Visthequantitycorrespondingtoeachstate%stateisamatrixrecordingthenumberoftherealizedstateattimet%%Originalauthor:mentsaddedbyQiangChen[rc]=size(T);%ris#ofrows,cis#ofcolumnsofTifnargin==1;%"nargin"refersto"numberofargumentsin".SoonlyTisprovidedinthiscaseV=[1:r];s0=1;n=100;end;ifnargin==2;%bothTandnareprovidedV=[1:r];s0=1;end;ifnargin==3;%T,nandS0areprovidedV=[1:r];end;%checkifthetransitionmatrixTissquareifr~=c;disp('errorusingmarkovfunction');disp('transitionmatrixmustbesquare');return;%breaktheprogramandreturnend;%checkifeachrowofTsumsupto1fork=1:r;ifsum(T(k,:))~=1;disp('errorusingmarkovfunction')disp(['row',num2str(k),'doesnotsumtoone']);%"num2str"('itsumsto:');disp([sum(T(k,:))]);disp(['normalizingrow',num2str(k),'']);T(k,:)=T(k,:)/sum(T(k,:));end;end;[v1v2]=size(V);ifv1~=1|v2~=r%"|"means"or"disp('errorusingmarkovfunction');disp(['statevaluevectorVmustbe1x',num2str(r),''])ifv2==1&v2==r;disp('transposingstatevaluationvector');V=V';%changeittoacolumnvectorelse;return;end;endifs0<1|s0>r;disp(['initialstate',num2str(s0),'isoutofrange']);disp(['initialstatedefaultingto1']);s0=1;end;%ThesimulationofMarkovchainformallystarts