Become an expert in R — Interactive courses, Cheat Sheets, certificates and more!
Get Started for Free

interp1

One-dimensional Interpolation


Description

One-dimensional interpolation of points.

Usage

interp1(x, y, xi = x,
        method = c("linear", "constant", "nearest", "spline", "cubic"))

Arguments

x

Numeric vector; points on the x-axis; at least two points require; will be sorted if necessary.

y

Numeric vector; values of the assumed underlying function; x and y must be of the same length.

xi

Numeric vector; points at which to compute the interpolation; all points must lie between min(x) and max(x).

method

One of “constant", “linear", “nearest", “spline", or “cubic"; default is “linear"

Details

Interpolation to find yi, the values of the underlying function at the points in the vector xi.

Methods can be:

linear linear interpolation (default)
constant constant between points
nearest nearest neighbor interpolation
spline cubic spline interpolation
cubic cubic Hermite interpolation

Value

Numeric vector representing values at points xi.

Note

Method ‘spline’ uses the spline approach by Moler et al., and is identical with the Matlab option of the same name, but slightly different from R's spline function.

The Matlab option “cubic” seems to have no direct correspondence in R. Therefore, we simply use pchip here.

See Also

Examples

x <- c(0.8, 0.3, 0.1, 0.6, 0.9, 0.5, 0.2, 0.0, 0.7, 1.0, 0.4)
y <- x^2
xi <- seq(0, 1, len = 81)
yl <- interp1(x, y, xi, method = "linear")
yn <- interp1(x, y, xi, method = "nearest")
ys <- interp1(x, y, xi, method = "spline")

## Not run: 
plot(x, y); grid()
lines(xi, yl, col="blue", lwd = 2)
lines(xi, yn, col="black", lty = 2)
lines(xi, ys, col="red")
  
## End(Not run)

## Difference between spline (Matlab) and spline (R).
x <- 1:6
y <- c(16, 18, 21, 17, 15, 12)
xs <- linspace(1, 6, 51)
ys <- interp1(x, y, xs, method = "spline")
sp <- spline(x, y, n = 51, method = "fmm")

## Not run: 
plot(x, y, main = "Matlab and R splines")
grid()
lines(xs, ys, col = "red")
lines(sp$x, sp$y, col = "blue")
legend(4, 20, c("Matlab spline", "R spline"), 
              col = c("red", "blue"), lty = 1)
  
## End(Not run)

pracma

Practical Numerical Math Functions

v2.3.3
GPL (>= 3)
Authors
Hans W. Borchers [aut, cre]
Initial release
2021-01-22

We don't support your browser anymore

Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.