簡體   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