clear all;
n=300;
H=cell2mat(struct2cell(load('Z-HIGH.mat'))); %读取数据
S=cell2mat(struct2cell(load('Z-SHI.mat')));
T=cell2mat(struct2cell(load('Z-TEM.mat')));
W=cell2mat(struct2cell(load('Z-WIN.mat')));
h=0.08441;
s=-0.07848;
t=0.08785;
w=0.08332;
load lll.dat
x=lll(:,1);y=lll(:,2);z=lll(:,3);
[X, Y, Z1]=griddata(x,y,z,linspace(min(x),max(x),n)',linspace(min(y),max(y)',n),'cubic');
A=max(max(Z1));B=min(min(Z1));%A=A(1,1);B=B(1,1);
Z=(Z1-B)./(A-B);
Z=Z.*1000;
figure(1)
cdata=cat(3,zeros(size(X)),ones(size(X)),zeros(size(X)));%绿色
surf(X,Y,Z,cdata);
T1=h.*H+s.*S+t.*T+w.*W;
T1=flipdim(T1,1);%二维到三维的变化中会形成矩阵列颠倒
T2=ones(n);%隔离带
R=0.85;
for j=1:5
T2(50*j,:)=R;
T2(50*j+1,:)=R;
T2(50*j-1,:)=R;
end
for j=1:5
T2(:,50*j)=R;
T2(:,50*j+1)=R;
T2(:,50*j-1)=R;
end
[XX,YY]=find(T2==0.85)
XX=X(1,XX);
YY=Y(YY,1);
T=mapminmax(T1,0.6,1).*T2;%影响因素归一化
pspread=0.63;
pgrowth=0;
ul=[n,1:n-1];
dr=[2:n,1];
hang=175;
lie=175;
veg=2*ones(n);
veg(hang,lie)=1
for i=1:300
e(i,1)=length(find(veg==0));
if(e(i,1)>81000)
break
else
h1=veg;
h2=h1;
h3=h2;
h4=h3;
h1(n,1:n)=0;
h2(1:n,n)=0;
h3(1:n,1)=0;
h4(1,1:n)=0;
sum=(h1(ul,:)==1)+(h2(:,ul)==1)+(h3(:,dr)==1)+(h4(dr,:)==1);
sum1=((sum==1).*(1-(1-pspread)));
sum2=((sum==2).*(1-(1-pspread)^2));
sum3=((sum==3).*(1-(1-pspread)^3));
sum4=((sum==4).*(1-(1-pspread)^4));
s=sum1+sum2+sum3+sum4;
veg=2*(veg==2)-((veg==2)&((sum>0)&(rand(n,n)<s.*T)))+2*((veg==0)&rand(n,n)<pgrowth);
[xx,yy]=find(veg==1);
zz=diag(Z(xx(:,1),yy(:,1)));
xx=X(1,xx);
yy=Y(yy,1);
% if((i>100)&(length(zz)<10))
% break;
% else
hold on;
plot3(yy,xx,zz,'r.');
% [xx,yy]=find(veg==1);
% [xx1,yy1]=find(veg==0);
% zz=Z(xx,yy);
% % zz1=Z(xx1,yy1);
% hold on;
% plot3(xx,yy,zz,'r.');
% % hold on;
% % plot3(xx1,yy1,zz1,'r.');
xlabel('横坐标');
ylabel('纵坐标');
zlabel('海拔');
% figure(2)
% contour(X,Y,Z,10)%画10条等高线
% plot()
drawnow
title(i)
end
end
% end
xlabel('经度');
ylabel('纬度');
zlabel('海拔');
figure(2)
surf(X,Y,T);%概率分布图
xlabel('经度');
ylabel('纬度');
title('蔓延率');
shading interp;
figure(3)
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
- 19.
- 20.
- 21.
- 22.
- 23.
- 24.
- 25.
- 26.
- 27.
- 28.
- 29.
- 30.
- 31.
- 32.
- 33.
- 34.
- 35.
- 36.
- 37.
- 38.
- 39.
- 40.
- 41.
- 42.
- 43.
- 44.
- 45.
- 46.
- 47.
- 48.
- 49.
- 50.
- 51.
- 52.
- 53.
- 54.
- 55.
- 56.
- 57.
- 58.
- 59.
- 60.
- 61.
- 62.
- 63.
- 64.
- 65.
- 66.
- 67.
- 68.
- 69.
- 70.
- 71.
- 72.
- 73.
- 74.
- 75.
- 76.
- 77.
- 78.
- 79.
- 80.
- 81.
- 82.
- 83.
- 84.
- 85.
- 86.
- 87.
- 88.
- 89.
- 90.
- 91.
- 92.
- 93.
- 94.
- 95.
- 96.
- 97.
- 98.
- 99.
- 100.
- 101.
- 102.
- 103.
- 104.