R: Bivariate Interpolation for Data on a Rectangular grid

bicubic {akima} | R Documentation

## Bivariate Interpolation for Data on a Rectangular grid

### Description

The description in the Fortran code says:

This subroutine performs interpolation of a bivariate function, z(x,y), on a rectangular grid in the x-y plane. It is based on the revised Akima method.

In this subroutine, the interpolating function is a piecewise function composed of a set of bicubic (bivariate third-degree) polynomials, each applicable to a rectangle of the input grid in the x-y plane. Each polynomial is determined locally.

This subroutine has the accuracy of a bicubic polynomial, i.e., it interpolates accurately when all data points lie on a surface of a bicubic polynomial.

The grid lines can be unevenly spaced.

### Usage

    bicubic(x, y, z, x0, y0)

### Arguments

`x` | a vector containing the `x` coordinates of the rectangular data grid.
`y` | a vector containing the `y` coordinates of the rectangular data grid.
`z` | a matrix containing the `z[i,j]` data values for the grid points (`x[i]`,`y[j]`).
`x0` | vector of `x` coordinates used to interpolate at.
`y0` | vector of `y` coordinates used to interpolate at.

### Details

This functiuon is a R interface to Akima's Rectangular-Grid-Data Fitting algorithm (TOMS 760). The algorithm has the accuracy of a bicubic (bivariate third-degree) polynomial.

### Value

This function produces a list of interpolated points:

`x` | vector of `x` coordinates.
`y` | vector of `y` coordinates.
`z` | vector of interpolated data `z`.

If you need an output grid, see `bicubic.grid`.

### Note

Use `interp` for the general case of irregular gridded data!

### References

Akima, H. (1996) Rectangular-Grid-Data Surface Fitting that Has the Accuracy of a Bicubic Polynomial, J. ACM 22(3), 357-361

### See Also

`interp`, `bicubic.grid`

### Examples

    data(akima760)
    # interpolate at the diagonal of the grid [0,8]x[0,10]
    akima.bic <- bicubic(akima760$x,akima760$y,akima760$z,
                         seq(0,8,length=50), seq(0,10,length=50))
    plot(sqrt(akima.bic$x^2+akima.bic$y^2), akima.bic$z, type="l")

[Package akima version 0.6-2 Index]