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)
    }