- 积分
- 4
- 注册时间
- 2009-11-30
- 仿真币
-
- 最后登录
- 1970-1-1
|
楼主 |
发表于 2010-12-7 11:31:27
|
显示全部楼层
来自 江苏南京
本帖最后由 scott198510 于 2010-12-7 11:36 编辑
clear all;clc;
S=[2 2 2 3 3 4 4
2 2 1 1 1 4 4
6 1 1 1 1 1 4
6 1 1 1 1 1 5
6 6 1 1 1 5 5;
6 6 6 6 5 5 5;
6 6 6 6 5 5 5];
N=7;
Sd=zeros(N+2); % 把状态矩阵扩大至(N+2)×(N+2)
Sd(2:N+1,1)=S(:,N); % 把Sd处理为周期性边界条件
Sd(2:N+1,N+2)=S(:,1); % 把Sd处理为周期性边界条件
Sd(1,2:N+1)=S(N,:); % 把Sd处理为周期性边界条件
Sd(N+2,2:N+1)=S(1,:); % 把Sd处理为周期性边界条件
Sd(1,1)=S(N,N); % 把Sd处理为周期性边界条件
Sd(N+2,N+2)=S(1,1); % 把Sd处理为周期性边界条件
Sd(1,N+2)=S(N,1); % 把Sd处理为周期性边界条件
Sd(N+2,1)=S(1,N); % 把Sd处理为周期性边界条件
Sd(2:end-1, 2:end-1)=S % 把Sd处理为周期性边界条件
y=Sd(2:end-1,2:end-1);
x=unique(y);
s=cell(length(x),2);
for i=1:length(x)
[m,n]=find(y==x(i));
s{i,1}=x(i);
a=unique(Sd(m,n+1));
b=unique(Sd(m+2,n+1));
c=unique(Sd(m+1,n));
d=unique(Sd(m+1,n+2));
f=horzcat(a',b',c',d');
f(f==x(i))=[ ];
s{i,2}=unique(f);
end % 块的个数
C=s
用这种方法得到的是上面矩阵里面每个元素块的邻居元素块的个数,完全准确
但是为什么计算下面这个矩阵的时候,元素8组成的块,周围明明没有邻居1,统计却有1呢?
clear all;clc;
S=[2 2 2 3 3 4 4 9 9
2 2 1 1 1 4 4 9 9
6 1 1 1 1 1 4 9 9
6 1 1 1 1 1 5 9 8
6 6 1 1 1 5 5 8 8
6 6 6 6 5 5 5 8 8
6 6 6 6 5 5 5 8 8
7 7 7 7 8 8 8 8 8
7 7 7 7 8 8 8 8 8 ]
N=9;
Sd=zeros(N+2); % 把状态矩阵扩大至(N+2)×(N+2)
Sd(2:N+1,1)=S(:,N); % 把Sd处理为周期性边界条件
Sd(2:N+1,N+2)=S(:,1); % 把Sd处理为周期性边界条件
Sd(1,2:N+1)=S(N,:); % 把Sd处理为周期性边界条件
Sd(N+2,2:N+1)=S(1,:); % 把Sd处理为周期性边界条件
Sd(1,1)=S(N,N); % 把Sd处理为周期性边界条件
Sd(N+2,N+2)=S(1,1); % 把Sd处理为周期性边界条件
Sd(1,N+2)=S(N,1); % 把Sd处理为周期性边界条件
Sd(N+2,1)=S(1,N); % 把Sd处理为周期性边界条件
Sd(2:end-1, 2:end-1)=S % 把Sd处理为周期性边界条件
y=Sd(2:end-1,2:end-1);
x=unique(y);
s=cell(length(x),2);
for i=1:length(x)
[m,n]=find(y==x(i));
s{i,1}=x(i);
a=unique(Sd(m,n+1));
b=unique(Sd(m+2,n+1));
c=unique(Sd(m+1,n));
d=unique(Sd(m+1,n+2));
f=horzcat(a',b',c',d');
f(f==x(i))=[ ];
s{i,2}=unique(f);
end % 块的个数
C=s
|
|