Learn R Programming

signal (version 1.8-0)

sgolayfilt: Apply a Savitzky-Golay smoothing filter

Description

Smooth data with a Savitzky-Golay smoothing filter.

Usage

sgolayfilt(x, p = 3, n = p + 3 - p%%2, m = 0, ts = 1)

# S3 method for sgolayFilter filter(filt, x, ...)

Value

The filtered signal, of length(x).

Arguments

x

signal to be filtered.

p

filter order.

n

filter length (must be odd).

m

return the m-th derivative of the filter coefficients.

ts

time scaling factor.

filt

filter characteristics (normally generated by sgolay).

...

additional arguments (ignored).

Author

Original Octave version by Paul Kienzle pkienzle@users.sf.net. Modified by Pascal Dupuis. Conversion to R by Tom Short.

Details

These filters are particularly good at preserving lineshape while removing high frequency squiggles.

References

Octave Forge https://octave.sourceforge.io/

See Also

sgolay, filter

Examples

Run this code
# Compare a 5 sample averager, an order-5 butterworth lowpass
# filter (cutoff 1/3) and sgolayfilt(x, 3, 5), the best cubic
# estimated from 5 points.
bf <- butter(5,1/3)
x <- c(rep(0,15), rep(10, 10), rep(0, 15))
sg <- sgolayfilt(x)
plot(sg, type="l")
lines(filtfilt(rep(1, 5)/5,1,x), col = "red") # averaging filter
lines(filtfilt(bf,x), col = "blue")           # butterworth
points(x, pch = "x")                          # original data

Run the code above in your browser using DataLab