Learn R Programming

signal (version 1.8-0)

fir2: 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))

Value

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

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.

Author

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

Run this code
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)

Run the code above in your browser using DataLab