% ÀîÈÊÃñ
clc;clear all;close all
max_j=193;max_i=81; 
d11=0.005    ;    d13=0.005; d14=0.001;d12=0.001;
d15=0.0001;  d16=0.0001  ;  d17=0.0001 ; d18=0.0001;
n=0.7; % ¿×϶¶È
cdd=0.001; %  Pcd¹ÌÏàÉú³¤ºË¸ÅÂÊ
numtotal_need=(1-n)*max_i*max_j;
numsoild=0;
arrgrid=zeros(max_i,max_j);
while numsoild<numtotal_need/40
    for i=1:max_i
        for j=1:max_j
            if abs(rand())<cdd
                numsoild=numsoild+1;arrgrid(i,j)=1;
                soild(numsoild,1)=i;soild(numsoild,2)=j;
            end
matlab 下载        end
    end
end
Tnumsoild=numsoild; % ×ÜÉú³¤ºËÊý
% figure(1)
% imshow(~arrgrid) ;  % 1°×É«ÊÇ¿×϶£¬0ºÚÉ«ÊǹÌÌå
% µÚ2²½£¬´Ó¹ÌÏàÄÚºËÏòÖÜΧ8¸ö·½ÏòÉú³¤
while Tnumsoild<numtotal_need
    for index_soild=1:Tnumsoild
       
        index_i=soild(index_soild,1);
        index_j=soild(index_soild,2);
        %  ºá×ŵÄÊÇy·½Ïò
        %  Êú×ŵÄÊÇx·½Ïò
        %¹ÌÏàÄÚºËÏòÓÒÉú³¤  1·½Ïò
        if index_j<max_j-1
            i=index_i;j=index_j+1; % ÓÒ1
            if arrgrid(i,j)==0  && rand()<d11
                numsoild=numsoild+1;arrgrid(i,j)=1;
                soild(numsoild,1)=i;soild(numsoild,2)=j;
            end
        end
        %¹ÌÏàÄÚºËÏòÓÒÉú³¤  2·½Ïò
        if index_i<max_i-1
            i=index_i+1;j=index_j; % ÓÒ1
            if arrgrid(i,j)==0 && rand()<d12
                numsoild=numsoild+1;arrgrid(i,j)=1;
                soild(numsoild,1)=i;soild(numsoild,2)=j;
            end
        end
        %¹ÌÏàÄÚºËÏòÓÒÉú³¤  3·½Ïò
        if index_j>2+1
            i=index_i;j=index_j-1;
            if arrgrid(i,j)==0 && rand()<d13 
                numsoild=numsoild+1;arrgrid(i,j)=1;
                soild(numsoild,1)=i;soild(numsoild,2)=j;
            end
        end
        %¹ÌÏàÄÚºËÏòÓÒÉú³¤  4·½Ïò
        if index_i>2+1
            i=index_i-1;j=index_j;
            if arrgrid(i,j)==0 && rand()<d14
                numsoild=numsoild+1;arrgrid(i,j)=1;
                soild(numsoild,1)=i;soild(numsoild,2)=j;
            end
        end
        %¹ÌÏàÄÚºËÏòÓÒÉú³¤  5·½Ïò
        if index_j<max_j-1 && index_i<max_i-1
            i=index_i+1;j=index_j+1;
            if arrgrid(i,j)==0 && rand()<d15
                numsoild=numsoild+1;arrgrid(i,j)=1;
                soild(numsoild,1)=i;soild(numsoild,2)=j;
            end
        end
        %¹ÌÏàÄÚºËÏòÓÒÉú³¤  6·½Ïò
        if index_i<max_i-1 && index_j>2+1
            i=index_i+1;j=index_j-1; % ÓÒ1
            if arrgrid(i,j)==0 && rand()<d16
                numsoild=numsoild+1;arrgrid(i,j)=1;
                soild(numsoild,1)=i;soild(numsoild,2)=j;
            end
        end
        %¹ÌÏàÄÚºËÏòÓÒÉú³¤  7·½Ïò
        if index_j>2+1 && index_i>2+1
            i=index_i-1;j=index_j-1; % ÓÒ1
            if arrgrid(i,j)==0 && rand()<d17 
                numsoild=numsoild+1;arrgrid(i,j)=1;
                soild(numsoild,1)=i;soild(numsoild,2)=j;
            end
        end
        %¹ÌÏàÄÚºËÏòÓÒÉú³¤  8·½Ïò
        if index_j<max_j-1 && index_i>2+1
            i=index_i-1;j=index_j+1; % ÓÒ1
            if arrgrid(i,j)==0 && rand()<d18 
                numsoild=numsoild+1;arrgrid(i,j)=1;
                soild(numsoild,1)=i;soild(numsoild,2)=j;
            end
        end
    end % index_soil
    Tnumsoild=numsoild;
end  % end while
% x=grid(:,1);
% y=grid(:,2);
% z=grid(:,3); % Íø¸ñÊôÐÔ 0 ÒºÏà  1 ¹ÌÏà
% [x,y]=meshgrid(1:max_i,1:max_j);
figure(2)
imshow(~arrgrid) ;  % °×É«ÊÇ¿×϶£¬ºÚÉ«ÊǹÌÌå
% colormap(gray());imagesc(arrgrid);
% for j=1:max_j
% scatter(arrgrid(:,j),'filled');
% end
% hold on
% for i=1:max_i
%    scatter(arrgrid(i,:),'filled')
% end
%
% % »æÖƹÌÌåÂÖÀªÏß  cΪÂÖÀªÊý¾Ý
% figure(2)
% [c,h]=contour(x,y,arrgrid,[1 1]);