资源描述
(完整版)随机生成多孔介质matlab程序
% ÀîÈÊÃñ
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
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]);
展开阅读全文