【问题标题】:Use `fields::interp.surface` to interpolate from grid to irregular points使用 `fields::interp.surface` 从网格插值到不规则点
【发布时间】:2017-10-09 07:55:27
【问题描述】:

我正在尝试从网格到一组不规则点进行双线性插值,与How can I get the value of a kernel density estimate at specific points? 相同。但是,当我尝试接受的答案时,出现尺寸不匹配错误:

n <- 100
x <- rnorm(n)
y <- 3 + 2* x * rexp(n) + rnorm(n)
# add some outliers
y[sample(1:n,20)] <- rnorm(20,20,20)
DF <- data.frame(x,y)

# Calculate 2d density over a grid
library(MASS)
dens <- kde2d(x,y)

# create a new data frame of that 2d density grid
# (needs checking that I haven't stuffed up the order here of z?)
gr <- data.frame(with(dens, expand.grid(x,y)), as.vector(dens$z))
names(gr) <- c("x", "y", "z")
newdata=data.frame(xgr=x, ygr=y)
dens <- fields::interp.surface(gr, newdata)

# the interp.surface output is 2x as long as dim(newdata)[1]
length(dens)
dim(newdata)[1]

任何帮助表示赞赏,如果这是微不足道的,我们深表歉意!

【问题讨论】:

    标签: r


    【解决方案1】:

    无需创建gr 对象。只需将dens 直接传递给interp.surface

    newdata=data.frame(x=x, y=y)
    newdata$z <- fields::interp.surface(dens, newdata)
    

    【讨论】:

      猜你喜欢
      • 2013-03-13
      • 2014-03-08
      • 1970-01-01
      • 2023-03-10
      • 2018-08-14
      • 2011-03-15
      • 2011-10-20
      • 2020-09-25
      相关资源
      最近更新 更多