Learn R Programming

oce (version 0.9-18)

ctdDecimate: Decimate a CTD profile

Description

Interpolate a CTD profile to specified pressure values.

Usage

ctdDecimate(x, p=1, method="boxcar", e=1.5, debug=getOption("oceDebug"))

Arguments

x
a ctd object, e.g. as read by read.ctd.
p
pressure increment, or vector of pressures. In the first case, pressures from 0dbar to the rounded maximum pressure are used, incrementing by p dbars. If a vector of pressures is given, interpolation is done to these pressures.
method
the method to be used for calculating decimated values. This may be a function or a string naming a built-in method. The built-in methods are "boxcar" (based on a local average), "approx" (based on linear interpolat
e
is an expansion coefficient used to calculate the local neighbourhoods for the "boxcar" and "lm" methods. If e=1, then the neighbourhood for the i-th pressure extends from the (i-1)-th press
debug
a Boolean, set to TRUE to debug the reading process.

Value

  • An object of class "ctd", with pressures that are as set by the "p" parameter and all other properties modified appropriately.

Details

The "approx" method is best for bottle data, in which the usual task is to interpolate from a coarse sampling grid to a finer one. For CTD data, the "boxcar" method is the more common choice, because the task is normally to sub-sample, and some degree of smoothing is usually desired. (The "lm" method is quite slow, and the results are similar to those of the boxcar method.)

NB. A sort of numerical cabeling effect can result from this procedure, but it can be avoided as follows

xd <- ctdDecimate(x) xd[["sigmaTheta"]] <- swSigmaTheta(xd[["salinity"]],xd[["temperature"]],xd[["pressure"]])

References

R.F. Reiniger and C.K. Ross, 1968. A method of interpolation with application to oceanographic data. Deep Sea Research, 15, 185-193.

See Also

The documentation for ctd-class explains the structure of CTD objects, and also outlines the other functions dealing with them.

Examples

Run this code
library(oce)
data(ctd)
plotProfile(ctd, "salinity", ylim=c(10, 0))
p <- seq(0, 45, 1)
ctd2 <- ctdDecimate(ctd, p=p)
lines(ctd2[["salinity"]], ctd2[["pressure"]], col="blue")
p <- seq(0, 45, 1)
ctd3 <- ctdDecimate(ctd, p=p, method=function(x,y,xout)
                    predict(smooth.spline(x, y, df=30), p)$y)
lines(ctd3[["salinity"]], ctd3[["pressure"]], col="red")

Run the code above in your browser using DataLab