gpt4 book ai didi

r - Julia 中具有不规则网格的三次样条插值

转载 作者:行者123 更新时间:2023-12-04 11:41:35 26 4
gpt4 key购买 nike

我正在将一些代码从 R 移植到 Julia,并且正在努力翻译 R 的 spline功能。我需要一个 Julia 函数:

function spline_j(x,y,xout)

产生与调用 R 函数相同的返回:
spline(x,y,,"fmm",,,xout)

即使用 Forsyth、Malcolm 和 Moler 的方法,这是 R 中的默认方法。

我的 xy总是一维的,但 x 的点不规则间隔。这种不规则性似乎排除了使用纯 Julia Interpolations包装为 documentation声明“目前只有 LinearInterpolation 支持不规则网格”。

Dierckx 包支持不规则 x ,所以是 spline_j 的候选人是:
using Dierckx

function spline_j(x, y, xout)
spl = Dierckx.Spline1D(x, y)
spl(xout)
end

匹配 R 的 spline函数如果 method"natural" .

是否可以复制 R 的 "fmm" Julia 中的方法?

最佳答案

关注此 PR https://github.com/JuliaMath/Interpolations.jl/pull/238 (合并为 #243),Interpolations.jl 实际上有许多优秀的单调样条插值算法,支持不规则网格,包括 Fritsch-Carlson (1980)、Fritsch-Butland (1984) 和 Steffen (1990)。
它似乎尚未反射(reflect)在文档中,但选项在以下 git diff 中可见
例如:

using Interpolations, Plots
x = sort(2*rand(10))
y = x.^2 .+ rand.()

itp = interpolate(x,y,FritschCarlsonMonotonicInterpolation())
xq = minimum(x):0.01:maximum(x)

plot(x,y, seriestype=:scatter, label="Data", legend=:topleft, framestyle=:box)
plot!(xq, itp.(xq), label="Interpolation")
Fritsch-Carlson monotonic interpolation on irregular grid
如果你更喜欢不同的插值方法,你也可以替换 FiniteDifferenceMonotonicInterpolation , FritschButlandMonotonicInterpolation , 或 SteffenMonotonicInterpolationFritschCarlsonMonotonicInterpolation .

关于r - Julia 中具有不规则网格的三次样条插值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58010406/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com