1、计算距离权重
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
T=xlsread('Book4.xlsx','A3:K32');%读取表格数据
X=T(:,2);%读取30各地区的纬度
Y=T(:,3);%读取30个地区的经度
A=[X Y];%维度和经度并排放,构成一个大矩阵
for i=1:30;%
for j=1:30;%
B(i,j)=distance(A(i,1),A(i,2),A(j,1),A(j,2)); %根据经纬度计算地点间的距离,主要应用distance函数
end
end
%B算出来的单位是度。
换算成距离的话,需要再乘以Pi/180再乘以6378.2,单位为千米。
(此处将地球当做一个球体,半径为6378.2千米)
C=B*pi/180*6378.2; %C即为地点间地理距离矩阵,单位为千米
D=1./C %D的元素为距离的倒数。即距离数值越小,倒数后构成的权重越大;反之亦然
D(D==inf)=0 %当矩阵元素为无限大时,将其变为0
E=sum(D,2) %计算各行之和
F=repmat(E,1,30) %主要应用repmat函数(平铺函数),一行30列,每个元素都是E
W=D./F %W即为行标准化后的地理距离空间权重矩阵
计算经济地理距离空间权重矩阵
%以下为计算经济地理距离空间权重矩阵 Wes的matlab程序。
%主要思想是:通过上一个matlab程序获得行标准化后的地理距离W,现在获得行标准化后的人均实际GDP经济距离矩阵,再将二者相乘再行标准化。
%与一些文章的细节处理不大一样。但我觉得本处理更合理些,因为多了几次行标准化,避免了地理距离和经济距离量级不一样造成的较大影响。
%注意:地理距离不变,但经济距离(很多人使用人均实际GDP的差额表示)是每年都改变的,所以有几年就有几个Wes
%{
选中下面一行,按F9(F9是matlab运行选中程序的快捷键),新建某年(例2002年)30个省(市,区)的人均实际GDPx列向量
Z=T(:,6) %将2002年30个省(市,区)的人均实际GDP放入Z
U=Z; %U与Z是一样的,这样做是为了后面计算经济距离
for i=1:30
for j=1:30
A(i,j)=Z(i,1)-U(j,1); %A中的元素即为2003年对应两个省区市之间人均实际GDP的差值
end
end
B=abs(A);%取A元素的绝对值。因为空间权重矩阵考虑的是距离,不是差值大小
C=1./B;
C(C==inf)=0;
%以下行标准化
D=sum(C,2); %计算各行之和
E=repmat(D,1,30); %主要应用repmat函数
We=C./E; %We即为行标准化后的经济距离权重矩阵
Wes1=W.*We;%地理距离倒数 点乘经济距离倒数
%以下再行标准化
F=sum(Wes1,2);
G=repmat(F,1,30);
Wes=Wes1./G