firhalfband

Halfband FIR filter design

Syntax

b = firhalfband(n,fp)
b = firhalfband(n,win)
b = firhalfband(n,dev,'dev')
b = firhalfband('minorder',fp,dev)
b = firhalfband('minorder',fp,dev,'kaiser')
b = firhalfband(...,'high')
b = firhalfband(...,'minphase')

Description

b = firhalfband(n,fp) designs a lowpass halfband FIR filter of order n with an equiripple characteristic. n must be an even integer. fp determines the passband edge frequency, and it must satisfy 0 < fp < 1/2, where 1/2 corresponds to π/2 rad/sample.

b = firhalfband(n,win) designs a lowpass Nth-order filter using the truncated, windowed-impulse response method instead of the equiripple method. win is an n+1 length vector. The ideal impulse response is truncated to length n + 1, and then multiplied point-by-point with the window specified in win.

b = firhalfband(n,dev,'dev') designs an Nth-order lowpass halfband filter with an equiripple characteristic. Input argument dev sets the value for the maximum passband and stopband ripple allowed.

b = firhalfband('minorder',fp,dev) designs a lowpass minimum-order filter, with passband edge fp. The peak ripple is constrained by the scalar dev. This design uses the equiripple method.

b = firhalfband('minorder',fp,dev,'kaiser') designs a lowpass minimum-order filter, with passband edge fp. The peak ripple is constrained by the scalar dev. This design uses the Kaiser window method.

b = firhalfband(...,'high') returns a highpass halfband FIR filter.

b = firhalfband(...,'minphase') designs a minimum-phase FIR filter such that the filter is a spectral factor of a halfband filter (recall that h = conv(b,fliplr(b)) is a halfband filter). This can be useful for designing perfect reconstruction, two-channel FIR filter banks. The minphase option for firhalfband is not available for the window-based halfband filter designs — b = firhalfband(n,win) and b = firhalfband('minorder',fp,dev,'kaiser') .

In the minimum phase cases, the filter order must be odd.

Examples

collapse all

This example designs a minimum order halfband filter with a specified maximum ripple.

b = firhalfband('minorder',.45,0.0001);
impz(b)

You can see that the impulse response is zero for every alternate sample.

References

[1] Saramaki, T, “Finite Impulse Response Filter Design,” Handbook for Digital Signal Processing. S.K. Mitra and J.F. Kaiser Eds. Wiley-Interscience, N.Y., 1993, Chapter 4.

Extended Capabilities

See Also

Functions

Introduced in R2011a