fir2: FIR filter generation

View source: R/fir2.R

fir2R Documentation

FIR filter generation

Description

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

Usage

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

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)

signal documentation built on Nov. 27, 2023, 5:11 p.m.

Related to fir2 in signal...