%说明:我们知道Markov链由一个状态跳到下一个状态的和为1。而MATLAB中,rand函数可以等概率产生区间[0,1]之间的数。例如从“状态1”跳到“状态1,2,3”的概率分别为0.3、0.5、0.2。所以我们可以使用rand(1)=0.3、0.3rand(1)=0.8和rand(1)0.8来表示概率0.3、0.5、0.2。clc;clearallorgn_P=[0,1/3,2/3;1/4,0,3/4;7/8,1/8,0]n=200;%总的试验次数Nmb_p=sqrt(numel(orgn_P));A=1;x=1:n+1;fori=1:1:na=rand(1);ifa=orgn_P(1,2)&&A(i)==1A=[A,2];endifaorgn_P(1,2)&&A(i)==1A=[A,3];endifa=orgn_P(2,1)&&A(i)==2A=[A,2];endifaorgn_P(2,1)&&A(i)==2A=[A,3];endifa=orgn_P(3,1)&&A(i)==3A=[A,1];endifaorgn_P(3,1)&&A(i)==3A=[A,2];endendplot([1:length(A)],A)axis([0,length(A),min(A)-0.5,max(A)+0.5])title('y的状态取值')P=zeros(Nmb_p,Nmb_p);fork=1:nfori=1:Nmb_pforj=1:Nmb_pifA(k)==i&A(k+1)==j;P(i,j)=P(i,j)+1;elseP(i,j)=P(i,j);endendendends=sum(P');s=[s',s',s'];P=P./s;disp('真实转移矩阵PP的估计值')P