]> AND Private Git Repository - these_gilles.git/blob - THESE/codes/wave/allcode/dualtree.m
Logo AND Algorithmique Numérique Distribuée

Private GIT Repository
final
[these_gilles.git] / THESE / codes / wave / allcode / dualtree.m
1 function w = dualtree(x, J, Faf, af)
2
3 % Dual-tree Complex Discrete Wavelet Transform
4 %
5 % USAGE:
6 %    w = dualtree(x, J, Faf, af)
7 % INPUT:
8 %   x - N-point vector
9 %       1) N is divisible by 2^J
10 %       2) N >= 2^(J-1)*length(af)
11 %   J - number of stages
12 %   Faf - filters for the first stage 
13 %   af - filters for the remaining stages
14 % OUTPUT:
15 %   w - DWT coefficients
16 %      w{j}{1}, j = 1..J - real part 
17 %      w{j}{2}, j = 1..J - imaginary part 
18 %      w{J+1}{d} - lowpass coefficients, d = 1,2
19 % EXAMPLE:
20 %    x = rand(1, 512);
21 %    J = 4;
22 %    [Faf, Fsf] = FSfarras;
23 %    [af, sf] = dualfilt1;
24 %    w = dualtree(x, J, Faf, af);
25 %    y = idualtree(w, J, Fsf, sf);
26 %    err = x - y;
27 %    max(abs(err))
28 %
29 % WAVELET SOFTWARE AT POLYTECHNIC UNIVERSITY, BROOKLYN, NY
30 % http://taco.poly.edu/WaveletSoftware/
31
32 % normalization
33 x = x/sqrt(2);
34
35 % Tree 1
36 [x1 w{1}{1}] = afb(x, Faf{1});
37 for j = 2:J
38     [x1 w{j}{1}] = afb(x1, af{1});
39 end
40 w{J+1}{1} = x1;
41
42 % Tree 2
43 [x2 w{1}{2}] = afb(x, Faf{2});
44 for j = 2:J
45     [x2 w{j}{2}] = afb(x2, af{2});
46 end
47 w{J+1}{2} = x2;
48
49