# [R] 2/3d interpolation from a regular grid to another regular grid

jiho jo.irisson at gmail.com
Wed Dec 5 23:45:38 CET 2007

On 2007-December-05  , at 16:47 , Scionforbai wrote:
>> I just read the description in ?Krig in the package fields which
>> says:
>> " Fits a surface to irregularly spaced data. "
>
> Yes, that is the most general case. Regular data location is a subset
> of irregular. Anyway, kriging, just one g, after the name of Danie
> Krige, the south african statistician who first applied such method
> for minig survey.

>> My problem is simpler
> ...
>> So it is really purely numerical.
> ...
>
> Of course R has ... ;) If your grids are really as simple as the
> example you posted above, and you have a really little variability,
> all you need is a "moving average", the arithmetic mean of the two
> nearest points belonging to grid1 and grid2 respectively. I assume
> that your regularly shaped grids are values stored in matrix objects.
>
> source code, I assure, is worth):

I can imagine it is indeed. I use the source of packages functions
very often.

> my.interp <- function(x, lag = 1)
> {
>     r <- unclass(x)  # don't want class-specific subset methods
>     i1 <- -1:-lag
>     r <- (r[i1] + r[-length(r):-(length(r)-lag+1)])/2
>     class(r) <- oldClass(x)
>     return(r)
> }
>
> Finally,
>
> g1 <- apply(grid1val,1,my.interp)
> g2 <- apply(grid2val,2,my.interp)
>
> give the interpolations on gridFinal, provided that all gridFinal
> points are within the grid1 and grid2 ones.
>
> If you want the mean from 4 points, you apply once more with lag=3,
> cbind/rbind to the result columns/rows o NAs, and you calculate the
> mean of the points of the two matrixes.
> This is the simplest (and quickest) moving average that you can do.
> For more complicated examples, and for 3d, you have to go a little
> further, but the principle holds.

Thanks very much. I'll test this soon (and it looks like the vector
operation might even be directly translatable in Fortran which is
nice since I'll need to do it in Fortran too).

Thanks again.

JiHO
---
http://jo.irisson.free.fr/