Learn R Programming

signal (version 1.8-0)

ellip: Elliptic or Cauer filter

Description

Generate an Elliptic or Cauer filter (discrete and continuous).

Usage

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

# S3 method for FilterOfOrder ellip(n, Rp = n$Rp, Rs = n$Rs, W = n$Wc, type = n$type, ...)

Value

An Arma object with list elements:

b

moving average (MA) polynomial coefficients

a

autoregressive (AR) polynomial coefficients

Arguments

n

filter order or generic filter model

Rp

dB of pass band ripple

Rs

dB of stop 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 ellip, overriding those given by n of class FilterOfOrder.

Author

Original Octave version by Paulo Neis p_neis@yahoo.com.br. Modified by Doug Stewart. Conversion to R by Tom Short.

Details

Because ellip is generic, it can be extended to accept other inputs, using "ellipord" to generate filter criteria for example.

References

Oppenheim, Alan V., Discrete Time Signal Processing, Hardcover, 1999.

Parente Ribeiro, E., Notas de aula da disciplina TE498 - Processamento Digital de Sinais, UFPR, 2001/2002.

https://en.wikipedia.org/wiki/Elliptic_filter

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

See Also

Arma, filter, butter, cheby1, and ellipord

Examples

Run this code
  # compare the frequency responses of 5th-order Butterworth and elliptic filters.
  bf <- butter(5, 0.1)
  ef <- ellip(5, 3, 40, 0.1)
  bfr <- freqz(bf)
  efr <- freqz(ef)
  plot(bfr$f, 20 * log10(abs(bfr$h)), type = "l", ylim = c(-50, 0),
       xlab = "Frequency, radians", ylab = c("dB"))
  lines(efr$f, 20 * log10(abs(efr$h)), col = "red")

Run the code above in your browser using DataLab