function f=iwt(w,F_zero,F_one,c_c_min,c_c_max,c_u_min,c_u_max, edge)
%$Id: iwt.m,v 1.1.1.1 2000/10/16 09:30:40 mattb Exp $
%===========================================================================
% Matt Bowers - University of Bath
%
% Copyright (c) 1996
%===========================================================================
%
% Inverse wavelet transform of w, using filters F_one and F_zero
% edge affects handling of edges:
%
% = 0 for wrapround (any wavelet)
% = 1 for odd reflection with symmetrical wavelet only
% = 2 for even reflection with symmetrical wavelet only
%
%===========================================================================
N=length(w);
f=zeros(1,N);
half_N=fix(N/2);
s2=ones(length(i),1);
for x=0:(N-1)
% lpf
kumin=ceil((x-c_u_max)/2 -0.25);
kumax=floor((x-c_u_min)/2 +0.25);
i = [kumin:kumax];
kix=i;
if edge==2
[kix dummy]=rfl_22(kix,half_N);
elseif edge==1
kix=rfl_12(kix,half_N);
else
kix=wrap(kix,half_N);
end
% kix*2
% w(kix+1)'
% F_zero(-x+i+i+c_u_max+1)
f(x+1)=f(x+1) + w(kix+1)*F_zero(-x+i+i+c_u_max+1);
% hpf
kcmin=ceil((c_c_min+x-1)/2 - 0.25);
kcmax=floor((c_c_max+x-1)/2 +0.25);
i= [kcmin:kcmax];
kix=i;
if edge==2
[kix s2]=rfl_22(kix,half_N);
elseif edge==1
kix=rfl_21(kix,half_N);
else
kix=wrap(kix,half_N);
end
% s2
w(half_N+kix+1)'
% F_one(i+i-x-c_c_min+2)
f(x+1) = f(x+1)+ (w(half_N+kix+1)*(-s2 .* F_one(i+i-x-c_c_min+2)));
end
评论0