library(fields)
#> Warning: package 'fields' was built under R version 4.1.2
#> Loading required package: spam
#> Warning: package 'spam' was built under R version 4.1.2
#> Loading required package: dotCall64
#> Warning: package 'dotCall64' was built under R version 4.1.2
#> Loading required package: grid
#> Spam version 2.7-0 (2021-06-25) is loaded.
#> Type 'help( Spam)' or 'demo( spam)' for a short introduction
#> and overview of this package.
#> Help for individual functions is also obtained by adding the
#> suffix '.spam' to the function name, e.g. 'help( chol.spam)'.
#>
#> Attaching package: 'spam'
#> The following objects are masked from 'package:base':
#>
#> backsolve, forwardsolve
#> Loading required package: viridis
#> Loading required package: viridisLite
#>
#> Try help(fields) to get started.
字符串 加载数据
data(lennon)
obj <- list(x = 1:20, y = 1:20, z = lennon[201:220, 201:220])
4条答案
按热度按时间pgvzfuti1#
我会尝试从R包
fields
中重新调整interp.surface
函数。一个从?interp.surface
重新适配的例子:加载包
字符串
加载数据
型
定义近似函数
型
测试一下
型
绘制原始数据
型
x1c 0d1x的数据
计算插值
型
图逼近
创建于2021-11-23由reprex package(v2.0.1)
这并不是100%等于
approxfun
的2D版本,但对于大多数用途来说可能已经足够好了。kkbh8khc2#
更新
如果你想返回一个函数,你可以定义
字符串
你会看到
型
上一次回答
你可以尝试
pracma
包中的interp2
,它几乎是MATLAB函数interp2
的镜像,可以帮助你进行二维插值(主要的区别在于方法选项,因为MATLAB版本包含“线性”,“最近”,“立方”,“makima”或“样条线”)。interp2(x, y, Z, xp, yp, method = c("linear", "nearest", "constant"))
参数x
,y
向量,元素单调递增,表示Z
中数据值的x-
和y-
坐标。Z
:数值length(y)
×length(x)
矩阵。xp
、yp
:x
-,y
-计算插值的点的坐标。method
:插值法,“线性”最有用。我认为默认的“线性”方法是用于所需的“2-D
approxfun
”的方法。下面是来自
pracma::interp2
的官方示例型
ryoqjall3#
(到目前为止)没有一个答案是理想的,我的也不是。然而,这最接近我个人所寻找的。希望这对行动有帮助。
字符串
eanckbw94#
一个简单且非常快速的例程是来自CRAN上提供的
cooltools
包的approxfun2
。它生成一个类似于approxfun
的向量化函数,比大多数其他2D插值器快得多。字符串