function w = dwt(x, J, af)
% Discrete 1-D Wavelet Transform
%
% USAGE:
% w = dwt(x, J, af)
% INPUT:
% x - N-point vector, where
% 1) N is divisible by 2^J
% 2) N >= 2^(J-1)*length(af)
% J - number of stages
% af - analysis filters
% af(:, 1) - lowpass filter (even length)
% af(:, 2) - highpass filter (evenlength)
% OUTPUT:
% w{j}, j = 1..J+1 - DWT coefficients
% EXAMPLE:
% [af, sf] = farras;
% x = rand(1,64);
% w = dwt(x,3,af);
% y = idwt(w,3,sf);
% err = x - y;
% max(abs(err))
%
% WAVELET SOFTWARE AT POLYTECHNIC UNIVERSITY, BROOKLYN, NY
% http://taco.poly.edu/WaveletSoftware/
for k = 1:J
[x w{k}] = afb(x, af);
end
w{J+1} = x;