Scaling and Wavelet Filter
Y = qmf(
Y = qmf(
Y = qmf(X,0)
Y = qmf(
changes the signs of the even index elements of the reversed vector filter
1, the signs of the odd index elements are
P changes the phase of the Fourier
transform of the resulting wavelet filter by π radians.
Y = qmf( is
Y = qmf(X,0).
x be a finite energy signal. Two filters F0 and F1 are
quadrature mirror filters (QMF) if, for any x,
where y0 is a decimated version of the signal x filtered with F0 so y0 defined by x0 = F0(x) and y0(n) = x0(2n), and similarly, y1 is defined by x1 = F1(x) and y1(n) = x1(2n). This property ensures a perfect reconstruction of the associated two-channel filter banks scheme (see Strang-Nguyen p. 103).
For example, if F0 is a Daubechies scaling filter
with norm equal to 1 and F1 =
then the transfer functions
and F1(z) of
the filters F0 and
F1 satisfy the
condition (see the example for
This example shows how to create a quadrature mirror filter associated with the
Compute the scaling filter associated with the
sF = dbwavf('db10');
dbwavf normalizes the filter coefficients so that the norm is equal to . Normalize the coefficients so that the filter has norm equal to 1.
G = sqrt(2)*sF;
Obtain the wavelet filter coefficients by using
qmf. Plot the filters.
H = qmf(G); subplot(2,1,1) stem(G) title('Scaling (Lowpass) Filter G') grid on subplot(2,1,2) stem(H) title('Wavelet (Highpass) Filter H') grid on
Set the DWT extension mode to Periodization. Generate a random signal of length 64. Perform a single-level wavelet decomposition of the signal using
origmode = dwtmode('status','nodisplay'); dwtmode('per','nodisplay') n = 64; rng 'default' sig = randn(1,n); [a,d] = dwt(sig,G,H);
The lengths of the approximation and detail coefficients are both 32. Confirm that the filters preserve energy.
ans = 1×2 92.6872 92.6872
Compute the frequency responses of
H. Zeropad the filters when taking the Fourier transform.
n = 128; F = 0:1/n:1-1/n; Gdft = fft(G,n); Hdft = fft(H,n);
Plot the magnitude of each frequency response.
figure plot(F(1:n/2+1),abs(Gdft(1:n/2+1)),'r') hold on plot(F(1:n/2+1),abs(Hdft(1:n/2+1)),'b') grid on title('Frequency Responses') xlabel('Normalized Frequency') ylabel('Magnitude') legend('Lowpass Filter','Highpass Filter','Location','east')
Confirm the sum of the squared magnitudes of the frequency responses of
H at each frequency is equal to 2.
sumMagnitudes = abs(Gdft).^2+abs(Hdft).^2; [min(sumMagnitudes) max(sumMagnitudes)]
ans = 1×2 2.0000 2.0000
Confirm that the filters are orthonormal.
df = [G;H]; id = df*df'
id = 2×2 1.0000 0.0000 0.0000 1.0000
Restore the original extension mode.
This example shows the effect of setting the phase parameter of the
Obtain the decomposition low-pass filter associated with a Daubechies wavelet.
lowfilt = wfilters('db4');
qmf function to obtain the decomposition low-pass filter for a wavelet. Then, compare the signs of the values when the
qmf phase parameter is set to 0 or 1. The reversed signs indicates a phase shift of radians, which is the same as multiplying the DFT by .
p0 = qmf(lowfilt,0)
p0 = 1×8 0.2304 -0.7148 0.6309 0.0280 -0.1870 -0.0308 0.0329 0.0106
p1 = qmf(lowfilt,1)
p1 = 1×8 -0.2304 0.7148 -0.6309 -0.0280 0.1870 0.0308 -0.0329 -0.0106
Compute the magnitudes and display the difference between them. Unlike the phase, the magnitude is not affected by the sign reversals.
ans = 1×8 0 0 0 0 0 0 0 0
Strang, G.; T. Nguyen (1996), Wavelets and Filter Banks, Wellesley-Cambridge Press.