0001
0002
0003
0004
0005
0006
0007
0008 function x = idwtlevel1(w, g0, g1, sym)
0009
0010 if (nargin == 3), sym = 0; end
0011
0012 N = length(w);
0013 m0 = length(g0);
0014 m1 = length(g1);
0015
0016 if (m0 ~= m1)
0017 error('Use biorfilt to create filters');
0018 end
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032
0033
0034 k = floor(m1/2)-1;
0035 if (sym == 0)
0036
0037 c0 = reshape([w(1:N/2); zeros(1,N/2)], [1 N]);
0038 c1 = reshape([w(N/2+1:N); zeros(1,N/2)], [1 N]);
0039 x = cconv(c0, g0, k) + cconv(c1, g1, k);
0040 elseif (sym == 1)
0041 k = floor(m1/2);
0042
0043 c0e = symext(w(1:N/2), k, m1-1-k, 'oe', 's');
0044 c1e = symext(w(N/2+1:N), k, m1-1-k, 'eo', 's');
0045
0046 c0 = reshape([c0e; zeros(1,N/2+m1-1)], [1 N+2*(m1-1)]);
0047 c1 = reshape([c1e; zeros(1,N/2+m1-1)], [1 N+2*(m1-1)]);
0048
0049 x = conv2(c0(k+1:N+k+m0-1), g0, 'valid') + ...
0050 conv2(c1(k+1:N+k+m0-1), g1, 'valid');
0051 elseif (sym == 2)
0052
0053 c0e = symext(w(1:N/2), m1-1-k, k, 'e', 's');
0054 c1e = symext(w(N/2+1:N), m1-1-k, k, 'e', 'a');
0055
0056 c0 = reshape([c0e; zeros(1,N/2+m1-1)], [1 N+2*(m1-1)]);
0057 c1 = reshape([c1e; zeros(1,N/2+m1-1)], [1 N+2*(m1-1)]);
0058
0059 x = conv2(c0(m0-k:2*(m1-1)-k+N), g0, 'valid') + ...
0060 conv2(c1(m0-k:2*(m1-1)-k+N), g1, 'valid');
0061 elseif (sym == 3)
0062
0063 c0 = reshape([w(1:length(w)/2); zeros(1,length(w)/2)], [1 length(w)]);
0064 c1 = reshape([w(length(w)/2+1:end); zeros(1,length(w)/2)], [1 length(w)]);
0065 x = conv(c0, g0) + conv(c1, g1);
0066 end
0067