This program designs a prototype filter for use in a Quadrature Mirror Filter filterbank. This two-channel filterbank has four filters, each based on a lowpass prototype H(z).
This filter bank has an alias cancelling property, but does introduce a ripple into the end-to-end frequency response. The design procedure minimizes a weighted combination of the ripple energy and the stopband energy of the lowpass prototype filter. The design procedure is motivated by a paper by Jain and Crochiere.
V. K. Jain and R. E. Crochiere, “Quadrature Mirror Filter Design in the Time Domain”, IEEE Trans. Acoustics, Speech, Signal Processing, vol. 32, no. 2, pp. 253–361, April 1984.
This routine returns the coefficients of the N-coefficient symmetric prototype filter H(z). The coefficients are normalized to have energy 1/2. When the analysis and synthesis filters are configured as shown above, the overall system has an impulse response with a unity coefficient at a delay of N-1 samples.
The procedure described in the paper above was modified to employ a cautious update during the iteration process – without this modification, the procedure did not converge.
A sample use of QMFDesign is shown below.
N = 32;
h = QMFDesign(N, 0.3, 1);
Update BSD License Info - no file changes
Create scripts with code, output, and formatted text in a single executable document.