cheby1 {signal} | R Documentation |
Generate a Chebyshev filter.
Description
Generate a Chebyshev type I or type II filter coefficients with specified dB of pass band ripple.
Usage
## Default S3 method:
cheby1(n, Rp, W, type = c("low", "high", "stop",
"pass"), plane = c("z", "s"), ...)
## S3 method for class 'FilterOfOrder'
cheby1(n, Rp = n$Rp, W = n$Wc, type = n$type, ...)
## Default S3 method:
cheby2(n, Rp, W, type = c("low", "high", "stop",
"pass"), plane = c("z", "s"), ...)
## S3 method for class 'FilterOfOrder'
cheby2(n, ...)
Arguments
n |
filter order or generic filter model |
Rp |
dB of pass band ripple |
W |
critical frequencies of the filter. |
type |
Filter type, one of |
plane |
|
... |
additional arguments passed to |
Details
Because cheby1
and cheby2
are generic, they can be extended to accept other
inputs, using "cheb1ord"
to generate filter criteria for example.
Value
An Arma
object with list elements:
b |
moving average (MA) polynomial coefficients |
a |
autoregressive (AR) polynomial coefficients |
For cheby1
, the ARMA model specifies a type-I Chebyshev filter,
and for cheby2
, a type-II Chebyshev filter.
Author(s)
Original Octave version by Paul Kienzle pkienzle@user.sf.net. Modified by Doug Stewart. Conversion to R by Tom Short.
References
Parks & Burrus (1987). Digital Filter Design. New York: John Wiley & Sons, Inc.
https://en.wikipedia.org/wiki/Chebyshev_filter
Octave Forge https://octave.sourceforge.io/
See Also
Arma
, filter
, butter
,
ellip
, and cheb1ord
Examples
# compare the frequency responses of 5th-order Butterworth and Chebyshev filters.
bf <- butter(5, 0.1)
cf <- cheby1(5, 3, 0.1)
bfr <- freqz(bf)
cfr <- freqz(cf)
plot(bfr$f/pi, 20 * log10(abs(bfr$h)), type = "l", ylim = c(-40, 0),
xlim = c(0, .5), xlab = "Frequency", ylab = c("dB"))
lines(cfr$f/pi, 20 * log10(abs(cfr$h)), col = "red")
# compare type I and type II Chebyshev filters.
c1fr <- freqz(cheby1(5, .5, 0.5))
c2fr <- freqz(cheby2(5, 20, 0.5))
plot(c1fr$f/pi, abs(c1fr$h), type = "l", ylim = c(0, 1),
xlab = "Frequency", ylab = c("Magnitude"))
lines(c2fr$f/pi, abs(c2fr$h), col = "red")