有四个状态:S0={(1,1,1,) } S1={(1,1,2);(1,2,1);(2,1,1)} S2={(2,2,1);(2,1,2);(1,2,2)} S3={(2,2,2)}
定义一个S为N*N的数组,用来存放各个状态之间转变的次数
程序运行后出现的Data数组中的内容如下:
2,1,1
2,2,1
1,1,2
1,1,1
2,1,1
1,1,1
1,1,2
1,2,1
2,1,1
1,1,1
1,1,2
1,2,2
相邻两状态的变化为:S1→S2有2次 S2→S1有1次 S1→S1有3次 S1→S0有3次 S0→S1有3次
最后输出的矩阵S=0 3 0 0
3 3 2 0
0 1 0 0
0 0 0 0
可否详细解释一下第三步?不是太懂,谢谢
追答第一步。让S=zeros(4),得到4*4的全0矩阵。
第二步,把数据读取到了U。根据具体情况用textread或load。
U=[2 1 1;2 2 1;1 1 2;1 1 1;2 1 1;1 1 1;1 1 2;1 2 1;2 1 1;1 1 1;1 1 2;1 2 2]
第三步,之前我的的思路是用for循环逐行计算。不过我现在想起来一个好办法,第三步你可以用sum来做。
x=sum(U,2).计算出的x=[4;5;4;3;4;3;4;4;4;3;4;5]
y=2*ones(12,1).得到y=[2;2;2;2;2;2;2;2;2;2;2;2]
令z=x-y.得到的z=[2;3;2;1;2;1;2;2;2;1;2;3]
这样,z就是纪录了每步所处的行列了。
接下来就是纪录到S里了。这里我打算用for循环做。
i=1;o=0;p=0;
while i<12
o=z(i,1);p=z(i+1,1);S(o,p)=S(o,p)+1;i=i+1;
end