Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
65 changes: 42 additions & 23 deletions src/interp.jl
Original file line number Diff line number Diff line change
@@ -1,26 +1,31 @@
"""
Linear interpolation in one dimension
LinInterp

##### Fields
Linear interpolation in one dimension.

- `breaks::AbstractVector` : A sorted array of grid points on which to interpolate
# Fields

- `vals::AbstractVector` : The function values associated with each of the grid points
- `breaks::AbstractVector`: A sorted array of grid points on which to interpolate.
- `vals::AbstractVector`: The function values associated with each of the grid points.

##### Examples
# Examples

```julia
breaks = cumsum(0.1 .* rand(20))
vals = 0.1 .* sin.(breaks)
li = LinInterp(breaks, vals)
julia> breaks = cumsum(0.1 .* rand(20));

# do interpolation via `call` method on a LinInterp object
li(0.2)
julia> vals = 0.1 .* sin.(breaks);

# use broadcasting to evaluate at multiple points
li.([0.1, 0.2, 0.3])
```
julia> li = LinInterp(breaks, vals);

julia> li(0.2) # do interpolation via `call` method on a LinInterp object
0.019866933079506122

julia> li.([0.1, 0.2, 0.3]) # use broadcasting to evaluate at multiple points
3-element Vector{Float64}:
0.009983341664682815
0.019866933079506122
0.02955202066613396
```
"""
struct LinInterp{TV<:AbstractArray,TB<:AbstractVector}
breaks::TB
Expand Down Expand Up @@ -133,22 +138,36 @@ end
(li::LinInterp{<:AbstractMatrix})(xp::Number) = li(xp, 1:li._ncol)

"""
interp(grid::AbstractVector, function_vals::AbstractVector)
interp(grid, function_vals)

Linear interpolation in one dimension.

# Arguments

Linear interpolation in one dimension
- `grid::AbstractVector`: A vector of grid points (will be sorted if not already sorted).
- `function_vals::AbstractVector`: The function values associated with each grid point.

##### Examples
# Returns

- `LinInterp`: A LinInterp object that can be called to perform linear interpolation.

# Examples

```julia
breaks = cumsum(0.1 .* rand(20))
vals = 0.1 .* sin.(breaks)
li = interp(breaks, vals)
julia> breaks = cumsum(0.1 .* rand(20));

julia> vals = 0.1 .* sin.(breaks);

julia> li = interp(breaks, vals);

# Do interpolation by treating `li` as a function you can pass scalars to
li(0.2)
julia> li(0.2) # Do interpolation by treating `li` as a function you can pass scalars to
0.019866933079506122

# use broadcasting to evaluate at multiple points
li.([0.1, 0.2, 0.3])
julia> li.([0.1, 0.2, 0.3]) # use broadcasting to evaluate at multiple points
3-element Vector{Float64}:
0.009983341664682815
0.019866933079506122
0.02955202066613396
```
"""
function interp(grid::AbstractVector, function_vals::AbstractVector)
Expand Down