Documentation

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.

 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.

Watch now