Академический Документы
Профессиональный Документы
Культура Документы
This filter is used in audio or signal processing to split the wideband (WB) signal into two narrowbands (NB) using analysis filters, and then these NBs are recombined using synthesis filters. Furthermore, this concept can be extended for multiple narrowbands such as 2,4,8,162n. In digital signal processing, a quadrature mirror filter is a filter whose magnitude response is mirror image about of that of another filter. Together these filters are known as the Quadrature Mirror Filter pair. A filter will be quadrature mirror filter of if The filter responses are symmetric about
Following is the block diagram of QMF banks. The output of the Synthesis Bank should be the perfect reconstruction of the input signal of the Analysis Bank.
These filter banks are made of lowpass, bandpass and highpass filters. In audio/voice codecs, a quadrature mirror filter pair is often used to implement a filter bank that splits an input signal into two bands. The resulting high-pass and low-pass signals are often reduced by a factor of 2, giving a critically sampled two-channel representation of the original signal. The analysis filters are often related by the following formulae in addition to quadrate mirror property:
where normalized to .
This is known as power complementary property. In other words, the power sum of the high-pass and low-pass filters is equal to 1.
Orthogonal filter banks
Orthogonal wavelets -- the Haar wavelets and related Daubechies wavelets, Coiflets, and some developed by Mallat, are generated by scaling functions which, with the wavelet, satisfy a quadrature mirror filter relationship. CODE
% Load scaling filter associated with an orthogonal wavelet. load db10; subplot(321); stem(db10); title('db10 low-pass filter'); % Compute the quadrature mirror filter. qmfdb10 = qmf(db10); subplot(322); stem(qmfdb10); title('QMF db10 filter'); % Check for frequency condition (necessary for orthogonality): % abs(fft(filter))^2 + abs(fft(qmf(filter))^2 = 1 at each % frequency. m = fft(db10); mt = fft(qmfdb10); freq = [1:length(db10)]/length(db10); subplot(323); plot(freq,abs(m)); title('Transfer modulus of db10') subplot(324); plot(freq,abs(mt)); title('Transfer modulus of QMF db10') subplot(325); plot(freq,abs(m).^2 + abs(mt).^2); title('Check QMF condition for db10 and QMF db10') xlabel(' abs(fft(db10))^2 + abs(fft(qmf(db10))^2 = 1') % Check for orthonormality.
df = [db10;qmfdb10]*sqrt(2); id = df*df'
OUTPUT:
% Editing some graphical properties, % the following figure is generated.
RESULT: