# 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
```