optint {clim.pact} | R Documentation

## Optimum interpolation

### Description

Solves for w in:

sum_j(M_ij w_ik) = <pi_j pi_k>.

Then computes a correction:

r = w_i q,

where q = gridded observations - first guess.

Reference: Reynolds and Smith (1994), Improved global sea surface temperature analysis using optimum interpolation, J. Climate, vol 7, 929-948.

NB: The testing of this routine is not yet finished - there may still be some bugs in this function.

### Usage

    optint(lon,lat,obs,lon.grd,lat.grd,fguess,eps,
                  lambda=50,M=NULL,piipij=NULL,w=NULL,tim=NULL,date=NULL)

### Arguments

`lon` | A vector of longitude coordinates.
`lat` | A vector of latitude coordinates.
`obs` | A vector of observations.
`lon.grd` | A vector of longitude coordinates for gridded values.
`lat.grd` | A vector of latitude coordinates for gridded values.
`fguess` | First guess values on given grid (`lon.grd,lat.grd`).
`eps` | Error estimates on given grid (`lon.grd,lat.grd`).
`lambda` | Correlation length.
`M` | Interpolation model matrix.
`piipij` | Interpolation weights.
`w` | Interpolation weights..
`tim` | Time index.
`date` | Date stamp.

### Value

A map object with additional elements: `M, piipij, w`

### Author(s)

R.E. Benestad

### Examples

    # This example takes a little while to run..

    lon <- c(12.02, 10.47,  9.28, 10.78, 10.71,  9.12,  8.20,  9.52,  8.18,  8.52,
              8.07,  6.15,  5.63,  6.37,  5.92,  5.33,  6.50,  7.42,  6.17, 10.00,
             10.02, 11.12, 10.93, 14.02, 13.98, 14.43, 15.42, 17.80, 18.53, 18.93,
             21.02, 21.88, 23.35, 23.52, 31.08, 15.47, 11.93)
    lat <- c(60.61, 61.10, 62.12, 59.38, 59.95, 60.58, 60.52, 59.90, 59.83, 59.03,
             58.20, 58.88, 58.88, 59.65, 60.40, 60.38, 60.65, 62.23, 62.57,
             63.20, 62.82, 63.20, 63.47, 65.52, 66.82, 67.27, 68.70, 68.73,
             69.06, 69.65, 69.73, 69.83, 69.98, 69.33, 70.37, 78.25, 78.92)
    val <- c(1.74, 1.43, 0.98, 1.31, 1.10, 1.39, 1.07, 1.33,-0.04, 1.07,
             1.07, 0.22, 0.89, 0.98, 0.77, 0.81, 1.43, 0.30, 0.69,-0.17,
             1.17, 0.32, 1.55, 1.65, 0.75, 0.78, 0.56, 0.04, 0.57, 0.52,
             0.51, 0.51, 0.96, 0.32, 0.35,-0.36, 0.00)
    library(akima)
    lon.grd <- seq(min(lon),max(lon),length=20)
    lat.grd <- seq(min(lat),max(lat),length=20)
    fguess <- interp(lon,lat,val,lon.grd,lat.grd)$z
    fguess[is.na(fguess)]<-mean(fguess,na.rm=TRUE)
    eps <- abs(fguess)*0 + 0.1
    opt.int <- optint(lon,lat,val,lon.grd,lat.grd,fguess,eps)
    image(opt.int$lon,opt.int$lat,opt.int$map)
    contour(opt.int$lon,opt.int$lat,opt.int$map,lwd=1,add=TRUE)
    contour(lon.grd,lat.grd,fguess,lty=2,lwd=2,col="darkblue",add=TRUE)
    addland()

[Package Contents]