One-dimensional Interpolation
One-dimensional interpolation of points.
interp1(x, y, xi = x, method = c("linear", "constant", "nearest", "spline", "cubic"))
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;
|
xi |
Numeric vector; points at which to compute the interpolation;
all points must lie between |
method |
One of “constant", “linear", “nearest", “spline", or “cubic"; default is “linear" |
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 |
Numeric vector representing values at points xi
.
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.
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)
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.