%%%%%(≧ω≦)/第一题%%%%%%%%%%
A1=rands(100,100)+1;%100乘100的随机矩阵
A=floor(A1.*16)./16;%扩大16倍,取整,再除16,这样就等份到16个不同数里啦
imshow(A);%contourf(A,'DisplayName','A');figure(gcf);用这个就自动染色啦
%%%%%(≧ω≦)/第二题%%%%%%%%%%
A2=A;%先保存第一个矩阵,这样再生成时就可以直接COPY这段程序咯
for i=9:1:91%规定范围,不要出现A的(-1,-1)这些坐标,这样就可以四面八方啦
for j=9:1:91
for k=-8:1:8%不让它超出矩阵范围%如果是8步内都可就再加个步数的循环
if(k>=8);o=8;%同理不能出现(100,101)这样的坐标
else o=k;
end
if(8-k>=8);p=8;
else p=8-k ;
end
if (A2(i,j)==A2(i+o,j+p));%逐点判断如果出现距离该点8步以内就记0,否则记1
B(i,j)=0;else B(i,j)=1;
end
end
end
end
E1=sum(sum(B));%统计有几个1
%%%%%(≧ω≦)/第三题%%%%%%%%%%
AH=A;%同理记下之前的A,下面用的A就是新的啦
for g=1:1:10000;%循环10000次咯
A1=rands(100,100)+1;
A=floor(A1.*16)./16;
A2=A;
for i=9:1:91%这样就可以四面八方啦
for j=9:1:91
for k=-8:1:8
if(k>=8);o=8;
else o=k;
end
if(8-k>=8);p=8;
else p=8-k ;
end
if (A2(i,j)==A2(i+o,j+p));
B(i,j)=0;else B(i,j)=1;
end
end
end
end
E2=sum(sum(B));%那个J可以在这里乘
if E2>=E1%判断E1,E2的大小,保存需要的变成AH,E1,进行下次比较咯
AH=A1;E1=E2;
else
AH=AH;
end
end %大概是这意思吗?
contourf(AH,'DisplayName','AH');figure(gcf)