signal (version 0.7-6)

cheby1: Generate a Chebyshev filter.

Description

Generate a Chebyshev type I or type II filter coefficients with specified dB of pass band ripple.

Usage

# S3 method for default
cheby1(n, Rp, W, type = c("low", "high", "stop",
"pass"), plane = c("z", "s"), …)

# S3 method for FilterOfOrder cheby1(n, Rp = n$Rp, W = n$Wc, type = n$type, …)

# S3 method for default cheby2(n, Rp, W, type = c("low", "high", "stop", "pass"), plane = c("z", "s"), …)

# S3 method for FilterOfOrder cheby2(n, …)

Arguments

n

filter order or generic filter model

Rp

dB of pass band ripple

W

critical frequencies of the filter. W must be a scalar for low-pass and high-pass filters, and W must be a two-element vector c(low, high) specifying the lower and upper bands. For digital filters, W must be between 0 and 1 where 1 is the Nyquist frequency.

type

Filter type, one of "low" for a low-pass filter, "high" for a high-pass filter, "stop" for a stop-band (band-reject) filter, or "pass" for a pass-band filter.

plane

"z" for a digital filter or "s" for an analog filter.

additional arguments passed to cheby1 or cheby2, overriding those given by n of class FilterOfOrder.

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.

Details

Because cheby1 and cheby2 are generic, they can be extended to accept other inputs, using "cheb1ord" to generate filter criteria for example.

References

Parks & Burrus (1987). Digital Filter Design. New York: John Wiley & Sons, Inc.

http://en.wikipedia.org/wiki/Chebyshev_filter

Octave Forge http://octave.sf.net

See Also

Arma, filter, butter, ellip, and cheb1ord

Examples

Run this code
# NOT RUN {
  # 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")
# }

Run the code above in your browser using DataCamp Workspace