Interpolations is very similar, but it currently only supports linear and 
nearest-neighbor schemes for gridded interpolations:

using Interpolations

itp = interpolate((P_NOM,), ETA, Gridded(Linear())) # You pass the x-values 
as a tuple, since this generalizes to multi-dimensional coordinates
println(itp[3.5])

x = linspace(1.5, 14.9, 1024)
y = itp[x]

plot(x,y)



On Saturday, February 27, 2016 at 10:10:28 AM UTC-5, Uwe Fechner wrote:
>
> Thanks. The following code works:
>
> using Dierckx
>
> P_NOM = [1.5, 2.2, 3.7, 5.6, 7.5, 11.2, 14.9]
> ETA   = [93., 94., 94., 95., 95., 95.5, 95.5]
> calc_eta = Spline1D(P_NOM, ETA, k=1)
>
> println(calc_eta(3.5))
>
> Nevertheless I would be interested how to do that with Interpolations.jl. 
> Sometimes you don't have Fortran available.
>
> Best regards:
>
> Uwe
>
> On Saturday, February 27, 2016 at 3:58:11 PM UTC+1, Yichao Yu wrote:
>>
>>
>>
>> On Sat, Feb 27, 2016 at 9:40 AM, Uwe Fechner <uwe.fec...@gmail.com> 
>> wrote:
>>
>>> Hello,
>>>
>>> I don't think, that this works on a non-uniform grid. The array xg is 
>>> evenly spaced, and it 
>>> is NOT passed to the function InterpGrid.
>>>
>>>
>> I've recently tried Dierckx which support non-uniform interpolation. I 
>> only need very basic functions so I don't know if it has all the 
>> flexibility you need but it's probably worth a look if you haven't.
>>  
>>
>>> Uwe
>>>
>>>
>>> On Saturday, February 27, 2016 at 3:33:06 PM UTC+1, Cedric St-Jean wrote:
>>>>
>>>> Hi Uwe,
>>>>
>>>> Have you tried Grid.jl? I haven't tried it, but this example looks like 
>>>> it might work with a non-uniform grid.
>>>>
>>>> # Let's define a quadratic function in one dimension, and evaluate it on 
>>>> an evenly-spaced grid of 5 points:
>>>> c = 2.3  # center
>>>> a = 8.1  # quadratic coefficient
>>>> o = 1.6  # vertical offset
>>>> qfunc = x -> a*(x-c).^2 + o
>>>> xg = Float64[1:5]
>>>> y = qfunc(xg)
>>>> yi = InterpGrid(y, BCnil, InterpQuadratic)
>>>>
>>>>
>>>>
>>>>
>>>> On Saturday, February 27, 2016 at 9:21:53 AM UTC-5, Uwe Fechner wrote:
>>>>>
>>>>> Hello,
>>>>>
>>>>> I am trying to port the following function from python to julia:
>>>>>
>>>>> # -*- coding: utf-8 -*-
>>>>> from scipy.interpolate import InterpolatedUnivariateSpline
>>>>> import numpy as np
>>>>> from pylab import plot
>>>>>
>>>>> P_NOM = [1.5, 2.2, 3.7, 5.6, 7.5, 11.2, 14.9]
>>>>> ETA   = [93., 94., 94., 95., 95., 95.5, 95.5]
>>>>>
>>>>> calc_eta = InterpolatedUnivariateSpline(P_NOM, ETA, k=1)
>>>>>
>>>>> # plotting code, only for testing
>>>>> if __name__ == "__main__":
>>>>>     X = np.linspace(1.5, 14.9, 1024, endpoint=True)
>>>>>     ETA = []
>>>>>     for alpha in X:
>>>>>         eta = calc_eta(alpha)
>>>>>         ETA.append(eta)
>>>>>     plot(X, ETA)
>>>>>
>>>>> The resulting plot is shown at the end of this posting.
>>>>>
>>>>> How can I port this to Julia?
>>>>>
>>>>> I am trying to use the package "Interpolations.jl", but I do not see 
>>>>> any
>>>>> example, that shows the interpolation on a non-uniform grid.
>>>>>
>>>>> For now I need only linear interpolation, but I want to use B-Splines
>>>>> later.
>>>>>
>>>>> Any hint appreciated!
>>>>>
>>>>> Uwe Fechner
>>>>>
>>>>>
>>>>>
>>>>> <https://lh3.googleusercontent.com/-8OofwCQWohg/VtGwKR-1BOI/AAAAAAAAAQI/UTLksCCMIPo/s1600/LinearInterpolation.png>
>>>>>
>>>>
>>

Reply via email to