繁体   English   中英

Julia中的Matlab样条函数

[英]Matlab spline function in Julia

我试图在Julia中插入两个点,使用相同的Matlab方法( https://uk.mathworks.com/help/matlab/ref/spline.html )。 我已经尝试了Interpolations( 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中,运行样条函数就足够了。 在Julia中, 插值函数允许三次插值。 但是,似乎没有与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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM