我必须从相同的输入坐标(x,y)到相同的输出坐标(xo,yo)执行多个2-d线性插值。每次(z1,z2,z3,...)仅更改数据值(z)。
我一直在R上使用软件包interp。到目前为止,我已经多次调用命令“ interp”。像这样:
# create data
y <- rep(1:5,5) # input coords
x <- rep(1:5,each=5)
z1 <- 1:25 # data
z2 <- 25:1
xo <- c(1.1,2.2,3.3) # output coords
yo <- c(2.2,3.3,4.4)
# interpolate
library(interp)
z1.int <- interp(x,y,z1,xo,yo,output="points")[[3]]; z1.int
z2.int <- interp(x,y,z2,xo,yo,output="points")[[3]]; z2.int
# plot (optional)
layout(t(1:2))
plot(x,y,type='n'); text(x,y,z1,col='red'); text(xo,yo,z1.int)
plot(x,y,type='n'); text(x,y,z2,col='red'); text(xo,yo,z2.int)
但是,我怀疑有一种方法可以大大加快我的计算速度。插值过程包括许多步骤。我认为其中一些只需要执行一次,然后针对多个数据向量多次使用其结果。
有办法吗?