ywh19860616 发表于 2012-5-17 12:05 
谢谢epoh老师,很好的信息。
研究过再向您反馈。
82楼你说,Xij_bar过滤后的值比未过滤的更大
Xij_bar=Xij*EG./GI,这个公式麻烦你再确认一下
我看EG,GI两者蛮接近的
底下程序你再试试
%%%%%%
[x,y,utmzone] =
wgs2utm(yc,xc);
xy=[x y];
dmat=
distmat(xy);
W=row_norm(dmat);
Xij=xlsread('matlabgdp.xls');
[n1,m1]=size(Xij);
[n,m]=size(dmat);
%k=1:1:100;
k=65:0.1:85;
s=length(k);
ZZmat=zeros(n1,length(k));
ZZmat1=zeros(n1,m1);
WWij=zeros(n,m);
WW=zeros(n,m,s);
for s =1:length(k)
WWij=zeros(n,m);
for i = 1:n
for j = 1:m
WWij(i,j)=exp(-k(s)*W(i,j));
if ( i~=j & WWij(i,j) > 0)
WWij(i,j)= WWij(i,j);
else
WWij(i,j)=0;
end %end if
end %end j
WW(:,:,s)=WWij;
end %end i
for p = 1:n1
[Xij_bar,GGI,ZZG,ZZ]=Getis_revised(WWij,Xij(p,:));
ZZmat(p,s)=ZZ;
ZZmat1(p,:)=Xij_bar;
end % end p
end %end s
ZZmat
Indexmat=zeros(n1,4);%3--->4
for i =1:n1
Indexmat(i,1)=i;
index=find(ZZmat(i,:)==max(ZZmat(i,:)));
Indexmat(i,2)=ZZmat(i,index);
Indexmat(i,3)=k(index);
Indexmat(i,4)=index; %Indexmat(i,3)=index;
end
Indexmat
Indexmat =
1.0000 240.8070 82.9000 180.0000
2.0000 233.5120 77.2000 123.0000
3.0000 253.4746 77.5000 126.0000
4.0000 275.7307 75.0000 101.0000
5.0000 297.0071 73.1000 82.0000
6.0000 308.8611 72.6000 77.0000
7.0000 304.8666 73.1000 82.0000
8.0000 304.2774 72.8000 79.0000
9.0000 302.5375 72.1000 72.0000
10.0000 300.6290 71.9000 70.0000
11.0000 292.0350 71.8000 69.0000
12.0000 289.9479 71.5000 66.0000
13.0000 290.0635 70.6000 57.0000
14.0000 288.0453 70.1000 52.0000
15.0000 286.0138 69.5000 46.0000
16.0000 276.6872 71.9000 70.0000
17.0000 277.0790 66.9000 20.0000
18.0000 280.4675 66.9000 20.0000
19.0000 271.0008 68.9000 40.0000
20.0000 276.7987 69.5000 46.0000
21.0000 277.7074 69.9000 50.0000