The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.

Title: Interpolation From C
Version: 1.0.2
Description: Simple interpolation methods designed to be used from C code. Supports constant, linear and spline interpolation. An R wrapper is included but this package is primarily designed to be used from C code using 'LinkingTo'. The spline calculations are classical cubic interpolation, e.g., Forsythe, Malcolm and Moler (1977) <ISBN: 9780131653320>.
License: MIT + file LICENSE
Encoding: UTF-8
URL: https://github.com/mrc-ide/cinterpolate
BugReports: https://github.com/mrc-ide/cinterpolate/issues
RoxygenNote: 7.2.3
Suggests: knitr, rmarkdown, testthat
VignetteBuilder: knitr
Language: en-GB
NeedsCompilation: yes
Packaged: 2024-09-11 09:36:25 UTC; rfitzjoh
Author: Rich FitzJohn [aut, cre], Imperial College of Science, Technology and Medicine [cph]
Maintainer: Rich FitzJohn <rich.fitzjohn@gmail.com>
Repository: CRAN
Date/Publication: 2024-09-13 13:30:02 UTC

Create an interpolation function

Description

Create an interpolation function, using the same implementation as would be available from C code. This will give very similar answers to R's splinefun function. This is not the primary intended use of the package, which is mostly designed for use from C/C++. This function primarily exists for testing this package, and for exploring the interface without writing C code.

Usage

interpolation_function(x, y, type, scalar = FALSE, fail_on_extrapolate = FALSE)

Arguments

x

Independent variable

y

Dependent variable

type

Character string indicating the interpolation type ("constant", "linear" or "spline").

scalar

Return a function that will compute only a single x input at a time. This is more similar to the C interface and is equivalent to dropping the first dimension of the output.

fail_on_extrapolate

Logical, indicating if extrapolation should cause an failure (rather than an NA value)

Value

A function that can be used to interpolate the function(s) defined by x and y to new values of x.

Examples


# Some data to interpolate
x <- seq(0, 8, length.out = 20)
y <- sin(x)
xx <- seq(min(x), max(x), length.out = 500)

# Spline interpolation
f <- cinterpolate::interpolation_function(x, y, "spline")
plot(f(xx) ~ xx, type = "l")
lines(sin(xx) ~ xx, col = "grey", lty = 2)
points(y ~ x, col = "red", pch = 19, cex = 0.5)

# Linear interpolation
f <- cinterpolate::interpolation_function(x, y, "linear")
plot(f(xx) ~ xx, type = "l")
lines(sin(xx) ~ xx, col = "grey", lty = 2)
points(y ~ x, col = "red", pch = 19, cex = 0.5)

# Piecewise constant interpolation
f <- cinterpolate::interpolation_function(x, y, "constant")
plot(f(xx) ~ xx, type = "s")
lines(sin(xx) ~ xx, col = "grey", lty = 2)
points(y ~ x, col = "red", pch = 19, cex = 0.5)

# Multiple series can be interpolated at once by providing a
# matrix for 'y'.  Each series is interpolated independently but
# simultaneously.
y <- cbind(sin(x), cos(x))
f <- cinterpolate::interpolation_function(x, y, "spline")
matplot(xx, f(xx), type = "l", lty = 1)

These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.