savitzkyGolay {prospectr}R Documentation

Savitzky-Golay transformation

Description

Savitzky-Golay smoothing and derivative of a data matrix, data.frame or vector.

Usage

savitzkyGolay(X,m,p,w,delta.wav)

Arguments

X

a numeric data.frame, matrix or vector to transform

m

differentiation order

p

polynomial order

w

window size (must be odd)

delta.wav

optional sampling interval

Details

The Savitzky-Golay algorithm fits a local polynomial regression on the signal. It requires evenly spaced data points. Mathematically, it operates simply as a weighted sum over a given window:

x_j\ast = \frac{1}{N}∑_{h=-k}^{k}{c_hx_{j+h}}

where x_j\ast is the new value, N is a normalizing coefficient, k is the gap size on each side of j and c_h are pre-computed coefficients, that depends on the chosen polynomial order and degree.

The sampling interval specified with the delta.wav argument is used for scaling and get numerically correct derivatives. The convolution function is written in C++/Rcpp for faster computations.

Author(s)

Antoine Stevens

References

Savitzky, A., and Golay, M.J.E., 1964. Smoothing and differentiation of data by simplified least squares procedures. Anal. Chem. 36, 1627-1639.

Wentzell, P.D., and Brown, C.D., 2000. Signal processing in analytical chemistry. Encyclopedia of Analytical Chemistry, 9764-9800.

See Also

sgolayfilt

Examples

data(NIRsoil)
spc <- 1/10^NIRsoil$spc # conversion to reflectance
opar <- par(no.readonly = TRUE)
par(mfrow=c(2,1),mar=c(4,4,2,2))
# plot of the 10 first spectra
matplot(as.numeric(colnames(spc)),t(spc[1:10,]),type='l',xlab='',ylab='Reflectance')
mtext('Raw spectra')
sg <- savitzkyGolay(X = spc,1,3,11,delta.wav=2)
matplot(as.numeric(colnames(sg)),t(sg[1:10,]),type='l',xlab='Wavelength /nm',ylab='1st derivative')
mtext('1st derivative spectra')
par(opar)

[Package prospectr version 0.1.3 Index]