Savitzky-Golay filter design

`b = sgolay(k,f)`

b = sgolay(k,f,w)

[b,g] = sgolay(...)

`b = sgolay(k,f)`

designs
a Savitzky-Golay FIR smoothing filter `b`

. The polynomial
order `k`

must be less than the frame size, `f`

,
which must be odd. If `k`

= `f-1`

,
the designed filter produces no smoothing. The output, `b`

,
is an `f`

-by-`f`

matrix whose rows
represent the time-varying FIR filter coefficients. In a smoothing
filter implementation (for example, `sgolayfilt`

),
the last `(f-1)/2`

rows (each an FIR filter) are
applied to the signal during the startup transient, and the first `(f-1)/2`

rows
are applied to the signal during the terminal transient. The center
row is applied to the signal in the steady state.

`b = sgolay(k,f,w)`

specifies
a weighting vector `w`

with length `f`

,
which contains the real, positive-valued weights to be used during
the least-squares minimization.

`[b,g] = sgolay(...)`

returns
the matrix `g`

of differentiation filters. Each column
of `g`

is a differentiation filter for derivatives
of order `p`

-1 where `p`

is the
column index. Given a signal `x`

of length `f`

,
you can find an estimate of the `p`

^{th} order
derivative, `xp`

, of its middle value from:

xp((f+1)/2) = (factorial(p)) * g(:,p+1)' * x

[1] Orfanidis, Sophocles J. *Introduction
to Signal Processing*. Englewood Cliffs, NJ: Prentice Hall,
1996.

`filter`

| `fir1`

| `firls`

| `sgolayfilt`

Was this topic helpful?