sgolay
The goal of sgolay is to offer efficient and vectorized Savitzky-Golay filters.
Installation
You can install the CRAN version with
# install.packages("sgolay")
Or you can install the development version of sgolay from GitHub with:
# install.packages("remotes")
remotes::install_github("zeehio/sgolay")
Benchmark
sgolay
is faster than signal
, especially on either larger filter
lengths or when applied on matrices, since it uses the Fast Fourier
Transform and avoids several memory copies and extra allocations.
library(sgolay)
x <- matrix(runif(1000*1000), nrow = 1000, ncol = 1000)
filt <- signal::sgolay(p = 2, n = 51)
timing <- bench::mark(
signal = apply(x, 2L, function(s) signal::sgolayfilt(s, filt)),
sgolay = sgolay::sgolayfilt(x, filt),
min_iterations = 50
)
#> Warning: Some expressions had a GC in every iteration; so filtering is disabled.
plot(timing, type = 'ridge')
#> Loading required namespace: tidyr
#> Picking joint bandwidth of 0.0135