[英]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.