% author:dayon
% 读数据
uban2001 =textread('uban2001.txt');
uban2005 =textread('uban2005.txt');
pg =textread('pg.txt');% 替换掉-9999为nan
ind =find(uban2001 ==-9999);uban2001(ind)= nan;
ind =find(uban2005 ==-9999);uban2005(ind)= nan;
ind =find(pg ==-9999);pg(ind)= nan;% 确定范围
[rows, cols]=size(pg);
Time =20;% 迭代次数
% 计算邻域影响值(周围有8个邻域元胞)
Dataset=cell(Time,1);
Dataset{1,1}= uban2001;for t =2: Time
data = Dataset{t-1,1};% 中间区域元胞
for i =1: rows
for j =1: cols
if(i >=2&& i<=rows-1)&&(j >=2&& j<=cols-1)
rcells =[data(i,j+1)data(i+1,j+1)data(i+1,j)data(i+1,j-1)data(i,j-1)data(i-1,j-1)data(i-1,j)data(i-1,j+1)];
end
% 东西南北4个角落
if i==1&& j==1
rcells =[data(i,j+1)data(i+1,j+1)data(i+1,j)];
end
if i==1&& j==cols
rcells =[data(i+1,j)data(i+1,j-1)data(i,j-1)];
end
if i ==rows && j==cols
rcells =[data(i,j-1)data(i-1,j-1)data(i-1,j)];
end
if i ==rows && j==cols
rcells =[data(i-1,j)data(i-1,j-1)data(i,j-1)];
end
% 东西南北四个边
if i ==1&&( j>=2&& j<=cols-1)
rcells =[data(i,j+1)data(i+1,j)data(i,j-1)];
end
if i == rows &&( j>=2&& j<=cols-1)
rcells =[data(i,j+1)data(i,j-1)data(i-1,j)];
end
if j ==1&&(i>=2&& i<=rows-1)
rcells =[data(i,j+1)data(i+1,j)data(i-1,j)];
end
if j == cols &&(i>=2&& i<=rows-1)
rcells =[data(i+1,j)data(i,j-1)data(i-1,j)];
end
tempcon =sum(rcells(~isnan(rcells)));
con = tempcon;% 计算随机影响因子
ranind = rand;% 读取空间变量发展概率
pgdata =pg(i, j);% 计算综合发展概率
delp = con * ranind * pgdata;% 设置阈值
if delp >0.8% 这里以0.8为阈值
tmp(i, j)=1;elsetmp(i, j)=data(i, j);
end
end
end
Dataset{t,1}= tmp;
end
for k =1: Time
xt = Dataset{k,1};cgrid(k)=sum(xt(:)==1)
end
bar(cgrid)xlabel('迭代次数')ylabel('城市元胞数量')