Package 'sgolay'

Title: Efficient Savitzky-Golay Filtering
Description: Smoothing signals and computing their derivatives is a common requirement in signal processing workflows. Savitzky-Golay filters are a established method able to do both (Savitzky and Golay, 1964 <doi:10.1021/ac60214a047>). This package implements one dimensional Savitzky-Golay filters that can be applied to vectors and matrices (either row-wise or column-wise). Vectorization and memory allocations have been profiled to reduce computational fingerprint. Short filter lengths are implemented in the direct space, while longer filters are implemented in frequency space, using a Fast Fourier Transform (FFT).
Authors: Sergio Oller Moreno [aut, cre] , Robert Gentleman [ctb, cph] (Contributor to src/stats_filter.c and src/fft.c (derived from the stats R package)), Ross Ihaka [ctb, cph] (Contributor to src/stats_filter.c and src/fft.c (derived from the stats R package)), Brian Ripley [ctb, cph] (Contributor to src/stats_filter.c and src/fft.c (derived from the stats R package)), Martin Maechler [ctb, cph] (Contributor to src/stats_filter.c and src/fft.c (derived from the stats R package)), Duncan Murdoch [ctb, cph] (Contributor to src/stats_filter.c and src/fft.c (derived from the stats R package)), Institute for Bioengineering of Catalonia [cph]
Maintainer: Sergio Oller Moreno <[email protected]>
License: GPL (>= 2)
Version: 1.0.3
Built: 2024-12-07 02:51:49 UTC
Source: https://github.com/zeehio/sgolay

Help Index


Apply a Savitzky-Golay smoothing filter

Description

Smooth data or compute its derivatives with a Savitzky-Golay smoothing filter.

Usage

sgolayfilt(
  x,
  p = 3,
  n = p + 3 - p%%2,
  m = 0,
  ts = 1,
  rowwise = FALSE,
  engine = c("auto", "fft", "filter")
)

Arguments

x

A numeric matrix or vector

p

filter order.

n

filter length (must be odd).

m

return the m-th derivative of the filter coefficients.

ts

time scaling factor.

rowwise

If TRUE, Apply the filter by rows instead of by columns

engine

How is the filter applied. This parameter impacts the performance, but not the results. "auto" will select automatically an efficient engine. "fft" uses a Fast Fourier Transform to apply the filter. "filter" uses a convolution in the direct space. "fft" is more efficient on larger filter lengths.

Value

A matrix or vector of the same dimensions or length as x, with the result of the filter

Examples

x <- runif(300)
y <- sgolayfilt(x, p=2, n = 21)