R中的2d双线性插值

时间:2012-02-10 00:41:45

标签: r interpolation

我有一些多维数据结构,我需要进行一些插值。我真的很难在R中找到如何做到这一点的例子。

例如,如果我有数组old

old <- array(runif(10*12), dim=c(12,10))

str(old)
num [1:12, 1:10] 0.763 0.429 0.792 0.923 0.476 ...

我想做的是制作数组new

new <- interp2d(old, newx=6, newy=5) 

即。我想更改数组的维度,以便new是old数据的6 * 5数组 - 在此示例中,保留old网格中的总计非常重要。上面的一行是我想做的一个例子,我不知道怎么做,希望有人能做到!谢谢!

1 个答案:

答案 0 :(得分:2)

这是一个开始,但不是我确定它能做你想要的(保留总数)。事实上,当你以这种方式粗化时,我不确定我是怎么看到你能如何准确地保留总数...除非你宁愿“bin”而不是“插入”?

library(sos)
findFn("{bilinear interpolation}")

set.seed(101)
old <- array(runif(10*12), dim=c(12,10))

library(fields)

interp2d <- function(old, newx, newy) {
  interp.surface.grid(list(x=seq(nrow(old)),y=seq(ncol(old)),z=old),
                      list(x=seq(1,nrow(old),length=newx),
                           y=seq(1,ncol(old),length=newy)))$z
}

newmat <- interp2d(old, newx=6, newy=5)