Расстояние от сетки и отдельный набор точек нет для циклов

Мне нужно вычислить расстояние между сеткой, которая является результатом моей интерполяции кригинга, и некоторыми точками, где мне нужно интерполировать.

Проблема в том, что сетка довольно большая и делает банальный дубль для цикла, вычисляющего расстояние между точками сетки и моими точками интереса с geodDist от oce Пакет занимает навсегда.

Есть ли лучший способ рассчитать, какая точка в сетке ближе к некоторым точкам интереса?

Это мой банальный цикл

#find the closest points from the grid to the old samples
#kriging model and so on y_ok now contains the grid

y_ok <- krige(rssi~1, samples, predgrid, model = vfit_ok, nmax=5)

yok.fr<-as.data.frame(y_ok)
#samples_all.fr contains the points where I want to interpolate
require(oce)
dist.mtx<-matrix(data=NA,nrow=dim(samples_all.fr)[1],ncol=2)

for (i in 1:2){#dim(samples_all.fr[1])){
  for(j in 1:dim(yok.fr)[1]){
    a=geodDist(samples_all.fr[i,2], samples_all.fr[i,1], yok.fr[j,2], yok.fr[j,1])
    if(!(is.finite(dist.mtx[i,1]))|(a<dist.mtx[i,1])){
      dist.mtx[i,1]=a
      dist.mtx[i,2]=j
    } 
  }
}

Поскольку это просто вопрос передовой практики, я не включаю никаких данных, надеюсь, что все в порядке.

1 ответ

Решение

Как предполагает Карл, использование семейства функций apply может ускорить вычисления

 ??apply

Вы также можете обратиться к параллельной обработке

Другие вопросы по тегам