fir2: FIR filter generation

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

View source: R/fir2.R

Description

FIR filter coefficients for a filter with the given order and frequency cutoffs.

Usage

1
fir2(n, f, m, grid_n = 512, ramp_n = grid_n/20, window = hamming(n + 1))

Arguments

n

order of the filter (1 less than the length of the filter)

f

band edges, strictly increasing vector in the range [0, 1] where 1 is the Nyquist frequency. The first element must be 0 and the last element must be 1. If elements are identical, it indicates a jump in frequency response.

m

magnitude at band edges, a vector of length(f).

grid_n

length of ideal frequency response function defaults to 512, should be a power of 2 bigger than n.

ramp_n

transition width for jumps in filter response defaults to grid_n/20. A wider ramp gives wider transitions but has better stopband characteristics.

window

smoothing window. The returned filter is the same shape as the smoothing window.

Value

The FIR filter coefficients, an array of length(n+1), of class Ma.

Author(s)

Original Octave version by Paul Kienzle, pkienzle@user.sf.net. Conversion to R by Tom Short.

References

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

See Also

filter, Ma, fftfilt, fir1

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
f <- c(0, 0.3, 0.3, 0.6, 0.6, 1)
m <- c(0, 0, 1, 1/2, 0, 0)
fh <- freqz(fir2(100, f, m))
op <- par(mfrow = c(1, 2))
plot(f, m, type = "b", ylab = "magnitude", xlab = "Frequency")
lines(fh$f / pi, abs(fh$h), col = "blue")
# plot in dB:
plot(f, 20*log10(m+1e-5), type = "b", ylab = "dB", xlab = "Frequency")
lines(fh$f / pi, 20*log10(abs(fh$h)), col = "blue")
par(op)

Example output

Attaching package: 'signal'

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

    filter, poly

signal documentation built on May 25, 2021, 9:06 a.m.

Related to fir2 in signal...