ellipord: Elliptic filter order and cutoff

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

View source: R/ellipord.R

Description

Compute discrete elliptic filter order and cutoff for the desired response characteristics.

Usage

1
ellipord(Wp, Ws, Rp, Rs)

Arguments

Wp, Ws

pass-band and stop-band edges. For a low-pass or high-pass filter, Wp and Ws are scalars. For a band-pass or band-rejection filter, both are vectors of length 2. For a low-pass filter, Wp < Ws. For a high-pass filter, Ws > Wp. For a band-pass (Ws[1] < Wp[1] < Wp[2] < Ws[2]) or band-reject (Wp[1] < Ws[1] < Ws[2] < Wp[2]) filter design, Wp gives the edges of the pass band, and Ws gives the edges of the stop band. Frequencies are normalized to [0,1], corresponding to the range [0, Fs/2].

Rp

allowable decibels of ripple in the pass band.

Rs

minimum attenuation in the stop band in dB.

Value

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"

Rp

dB of pass band ripple

Rs

dB of stop band ripple

This object can be passed directly to ellip to compute discrete filter coefficients.

Author(s)

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

References

Lamar, Marcus Vinicius, Notas de aula da disciplina TE 456 - Circuitos Analogicos II, UFPR, 2001/2002.

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

See Also

Arma, filter, butter, cheby1, and ellipord

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
Fs <- 10000
elord <- ellipord(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)")
el1 <- ellip(elord)
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(-35,0), xlim = c(0,2000))
lines(c(5000, 1200, 1200, 5000, 5000), c(-1000, -1000, -29, -29, -1000),
      col = "red")
hf <- freqz(el1, Fs = Fs)
lines(hf$f, 20*log10(abs(hf$h)))

Example output

Attaching package: 'signal'

The following objects are masked from 'package:stats':

    filter, poly

signal documentation built on May 25, 2021, 3 p.m.

Related to ellipord in signal...