The goal of sgolay is to offer efficient and vectorized Savitzky-Golay filters.
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")
::install_github("zeehio/sgolay") remotes
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)
<- matrix(runif(1000*1000), nrow = 1000, ncol = 1000)
x
<- signal::sgolay(p = 2, n = 51)
filt
<- bench::mark(
timing 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