Learn R Programming

signal (version 0.5)

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 class 'default':
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, \ldots)

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

## S3 method for class 'FilterOfOrder':
cheby2(n, \ldots)

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,
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:
  • bmoving average (MA) polynomial coefficients
  • aautoregressive (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
# 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 DataLab