Description Usage Arguments Details Value Author(s) References See Also Examples

Compute butterworth filter order and cutoff for the desired response characteristics.

1 | ```
buttord(Wp, Ws, Rp, Rs)
``` |

`Wp, Ws` |
pass-band and stop-band edges. For a low-pass or
high-pass filter, |

`Rp` |
allowable decibels of ripple in the pass band. |

`Rs` |
minimum attenuation in the stop band in dB. |

Deriving the order and cutoff is based on:

*
|H(W)|^2 = 1 / [1+(W/Wc)^(2n)] = 10^(-R/10)*

With some algebra, you can solve simultaneously for `Wc`

and `n`

given
`Ws`

, `Rs`

and `Wp`

, `Rp`

. For high-pass filters, subtracting the band edges
from Fs/2, performing the test, and swapping the resulting `Wc`

back
works beautifully. For bandpass- and bandstop-filters, this process
significantly overdesigns. Artificially dividing `n`

by 2 in this case
helps a lot, but it still overdesigns.

An object of class `FilterOfOrder`

with the following list elements:

`n` |
filter order |

`Wc` |
cutoff frequency |

`type` |
filter type, one of “low”, “high”, “stop”, or “pass” |

This object can be passed directly to `butter`

to compute filter coefficients.

Original Octave version by Paul Kienzle, pkienzle@user.sf.net. Conversion to R by Tom Short.

Octave Forge https://octave.sourceforge.io/

`butter`

, `FilterOfOrder`

, `cheb1ord`

1 2 3 4 5 6 7 8 9 10 | ```
Fs <- 10000
btord <- buttord(1000/(Fs/2), 1200/(Fs/2), 0.5, 29)
plot(c(0, 1000, 1000, 0, 0), c(0, 0, -0.5, -0.5, 0),
type = "l", xlab = "Frequency (Hz)", ylab = "Attenuation (dB)")
bt <- butter(btord)
plot(c(0, 1000, 1000, 0, 0), c(0, 0, -0.5, -0.5, 0),
type = "l", xlab = "Frequency (Hz)", ylab = "Attenuation (dB)",
col = "red", ylim = c(-10,0), xlim = c(0,2000))
hf <- freqz(bt, Fs = Fs)
lines(hf$f, 20*log10(abs(hf$h)))
``` |

Embedding an R snippet on your website

Add the following code to your website.

For more information on customizing the embed code, read Embedding Snippets.