Rangular距离加权插值函数
R angular distance weighting interpolation function
我想使用 R 来进行 Angular-距离加权插值,例如here(第 3 页)。
这是一种插值法,它 (1) 通过相对于相关衰减距离的距离对数据点进行加权,并且 (2) 为孤立的数据点赋予更多权重。
我的问题是在 R 中是否有一些包实现,或者是否需要从头开始。我的 Google 搜索并没有给我任何明显的信息,但我不太了解 R 的插值包。所以如果有人这样做过,请告诉我。
没有可用的 R 包。我为 Angular 距离加权 (ADW) 编写了一个简单的函数,在 Shepard 1968
中实现
[X,Y] 是您要估算的坐标。 [Xtrain,Ytrain] 是数据点的坐标。 weights radial 是按距离的权重。
compute_weight_by_theta = function(X,Y,xtrain,ytrain,weights.radial){
N = length(xtrain)
weight.directional = integer(N)
for (i in 1:N){
numerator = 0;
denominator = 0;
for (j in 1:N){
xi = xtrain[i]; yi = ytrain[i]
xj = xtrain[j]; yj = ytrain[j]
if ((xi != xj) | (yi != yj)){
Sj = weights.radial[j]
Di = sqrt((X - xi)**2 + (Y - yi)**2)
Dj = sqrt((X - xj)**2 + (Y - yj)**2)
cos_theta = ((X-xi)*(X-xj) + (Y-yi)*(Y-yj)) / (Di*Dj)
numerator = numerator + (1-cos_theta)*Sj
denominator = denominator + Sj
}
}
weight.directional[i] = numerator/denominator
}
return(weight.directional)
}
我想使用 R 来进行 Angular-距离加权插值,例如here(第 3 页)。
这是一种插值法,它 (1) 通过相对于相关衰减距离的距离对数据点进行加权,并且 (2) 为孤立的数据点赋予更多权重。
我的问题是在 R 中是否有一些包实现,或者是否需要从头开始。我的 Google 搜索并没有给我任何明显的信息,但我不太了解 R 的插值包。所以如果有人这样做过,请告诉我。
没有可用的 R 包。我为 Angular 距离加权 (ADW) 编写了一个简单的函数,在 Shepard 1968
中实现[X,Y] 是您要估算的坐标。 [Xtrain,Ytrain] 是数据点的坐标。 weights radial 是按距离的权重。
compute_weight_by_theta = function(X,Y,xtrain,ytrain,weights.radial){
N = length(xtrain)
weight.directional = integer(N)
for (i in 1:N){
numerator = 0;
denominator = 0;
for (j in 1:N){
xi = xtrain[i]; yi = ytrain[i]
xj = xtrain[j]; yj = ytrain[j]
if ((xi != xj) | (yi != yj)){
Sj = weights.radial[j]
Di = sqrt((X - xi)**2 + (Y - yi)**2)
Dj = sqrt((X - xj)**2 + (Y - yj)**2)
cos_theta = ((X-xi)*(X-xj) + (Y-yi)*(Y-yj)) / (Di*Dj)
numerator = numerator + (1-cos_theta)*Sj
denominator = denominator + Sj
}
}
weight.directional[i] = numerator/denominator
}
return(weight.directional)
}