gpt4 book ai didi

Julia 中的 Matlab 样条函数

转载 作者:行者123 更新时间:2023-12-01 15:03:25 25 4
gpt4 key购买 nike

我正在尝试使用与 Matlab ( https://uk.mathworks.com/help/matlab/ref/spline.html ) 相同的方法在 Julia 中插入两个点。我尝试了插值 ( https://github.com/tlycken/Interpolations.jl) 库,但我在创建工作脚本时遇到了几个问题。

我有一个 DataArrays.DataArray{Float64,1} 有两个点(比如说 1.5 和 10.5),它们之间有 5 个 NA:

using DataFrames
using Interpolations

a = @data([1.5, NA, NA, NA, NA, NA, 10.5]);

在 Matlab 中,运行 spline 函数就足够了。在 Julia 中,interpolate 函数允许三次插值。但是,它似乎不适用于 NA。我该怎么做?此外,他们是否使用相同/类似的算法来插入这些点?

最佳答案

如果您假设它们是均匀分布的,那么您就是在假设可以使用 linspace 的线性插值。您只需要开始、结束和中间值的数量:

linspace(a[1],a[end],sum(isna(a)))

更一般地说,要在任何 NA 之间进行插值,您可以找到非 NA 值

idxs = find(~isna(a))

然后做

for i in 1:length(idxs)-1
tmpidxs = idxs[i]:idxs[i+1]
a[idxs[i]+1:idxs[i+1]-1] = linspace(a[idxs[i]],a[idxs[i+1]],length(tmpidxs))[2:end-1]
end

如果需要,您可以清理它或将其放入函数中。虽然假设每个已知值之间应该是线性间隔的,但这是一个奇怪的假设。

关于Julia 中的 Matlab 样条函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39642710/

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