clc
clear
A=[1 2 3 4];
t=length(A); % 计算序列“A”的总状态数
B=unique(A); % 序列“A”的独立状态数顺序,“E”
E=sort(B,'ascend');
tt=length(E);
a=0;
b=0;
c=0;
d=0;
for j=1:1:tt
Localization=find(A==E(j)); % 序列“A”中找到其独立状态“E”的位置
for i=1:1:length(Localization)
if Localization(i)+1>t
break; % 范围限定
elseif A(Localization(i)+1)== E(1)
a=a+1;
elseif A(Localization(i)+1)== E(2)
b=b+1;
elseif A(Localization(i)+1)== E(3)
c=c+1;
% 依此类推,取决于独立状态“E”的个数
else
d=d+1;
end
end
T(j,1:tt)=[a,b,c,d]; % “T”为占位矩阵
end
TT=T;
for u=2:1:tt
TT(u,:)= T(u,:)- T(u-1,:);
end
TT; % 至此,得到转移频数矩阵
Y=sum(TT,2);
for uu=1:1:tt
TR(uu,:)= TT(uu,:)./Y(uu,1);
end
TR % 最终得到马尔科夫转移频率/概率矩阵
% 观测序列马尔科夫性质的检验:
N=numel(TT);
uuu=1;
Col=sum(TT,2); % 对列求和
Row=sum(TT,1); % 对行求和
Total=sum(Row); % 频数总和
for i=1:1:tt
for j=1:1:tt
xx(uuu,1)=sum((TT(i,j)-(Row(i)*Col(j))./Total).^2./( (Row(i)*Col(j))./Total));
uuu=uuu+1; % 计算统计量x2
end
end
xx=sum(xx)