2016-09-22 2 views
3

Я пытаюсь интерполировать две точки в Julia, используя тот же подход Matlab (https://uk.mathworks.com/help/matlab/ref/spline.html). Я попробовал библиотеку Interpolations (https://github.com/tlycken/Interpolations.jl), но у меня возникло несколько проблем при создании рабочего скрипта.Функция сплайна Matlab в Julia

У меня есть 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 функция интерполяции допускает кубические интерполяции. Однако, похоже, он не работает с НС. Как мне это сделать? Кроме того, они используют один и тот же/аналогичный алгоритм для интерполяции этих точек?

+0

Что бы это означало для интерполяции НС? Вы должны что-то делать. Они должны быть равномерным пространством? Я думаю, что было бы странным поведением включать, потому что есть нестандартное подразумеваемое предположение, которое должно было произойти. –

ответ

2

Если вы сделаете предположение, что они равномерно распределены, вы принимаете линейную интерполяцию, для которой вы можете использовать linspace. Вам просто нужно начать, конец, и число значений Inbetween:

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

В более общем плане, сделать интерполяцию между любыми ВПЛ, вы можете найти не-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 

Вы можете очистить это или поместить его в функцию, если хотите. Это странное предположение, хотя предположить, что между каждым известным значением он должен быть линейно расположенным.

+0

В моем предыдущем ответе была опечатка. Нет, они не равномерно распределены. Мне не нужна линейная интерполяция, а кубический сплайн. – merch

+0

Вы не можете делать кубический сплайн с двумя точками данных: кубический многочлен требует 4 единицы информации. –

Смежные вопросы