我正在尝试使用 R 中的 interp1 函数来线性插值矩阵而不使用 for 循环。到目前为止,我已经尝试过:
bthD <- c(0,2,3,4,5) # original depth vector
bthA <- c(4000,3500,3200,3000,2800) # original array of area
Temp <- c(4.5,4.2,4.2,4,5,5,4.5,4.2,4.2,4)
Temp <- matrix(Temp,2) # matrix for temperature measurements
# -- interpolating bathymetry data --
depthTemp <- c(0.5,1,2,3,4)
layerZ <- seq(depthTemp[1],depthTemp[5],0.1)
library(signal)
layerA <- interp1(bthD,bthA,layerZ);
# -- interpolate= matrix --
layerT <- list()
for (i in 1:2){
t <- Temp[i,]
layerT[[i]] <- interp1(depthTemp,t,layerZ)
}
layerT <- do.call(rbind,layerT)
因此,在这里我在 for 循环中对矩阵的每一行使用了 interp1。我想知道如何在不使用 for 循环的情况下做到这一点。我可以在matlab中通过转置矩阵来做到这一点,如下所示:
layerT = interp1(depthTemp,Temp',layerZ)'; % matlab code
但是当我尝试在 R 中执行此操作时
layerT <- interp1(depthTemp,t(Temp),layerZ)
它不返回插值结果的矩阵,而是一个数值数组。如何确保 R 返回插值矩阵?