D=[1 5 3 6;0 5 8 5;5 3 1 0;7 3 0 5];
[m n]=size(D);
s=zeros(m-2,n-2);
A=zeros(m-2,n-2);
for i=2:m-1;
for j=2:n-1;
A=[D(i-1,j),D(i,j-1),D(i,j+1),D(i+1,j)];
s(i-1,j-1)=length(find(A==5));
end
end
s
按上面语句试试
D=[1 5 3 6;0 5 8 5;5 3 1 0;7 3 0 5];
[m n]=size(D);
s=zeros(m-2,n-2);
A=zeros(m-2,n-2);
for i=2:m-1;
for j=2:n-1;
A=[D(i-1,j),D(i,j-1),D(i,j+1),D(i+1,j)];
s(i-1,j-1)=length(find(A==5));
end
end
s
[m,n]=size(A);
D=zeros(m,n);
for i=2:m-1;
for j=2:n-1;
seg=A(i-1:i+1,j-1:j+1);
seg(2,2)=0;
D(i,j)=length(find(seg==5))
end
end
% A内部每个数的周围5的个数显示在D中的对应的位置。
以上只能找A内部数的结果,但是没有找A的边界的数。
如果也要边界的数的个数,用下面的:
[m,n]=size(A);
M=zeros(m+2,n+2);
M(2:end-1,2:end-1)=A;
D=zeros(m,n);
for i=2:m+1;
for j=2:n+1;
seg=M(i-1:i+1,j-1:j+1);
seg(2,2)=0;
D(i,j)=length(find(seg==5))
end
end