Permalink
Switch branches/tags
Nothing to show
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
107 lines (86 sloc) 4.29 KB
function cofs=d4boxcof
% cofs=D4BOXCOF
%
% Puts all the required coefficients for the 4-tap Daubechies wavelet
% transform on the interval in a structure array.
%
% SEE ALSO: D4BOXSTEP, D4BOXSTEPI, PRECOND4
%
% Last modified by fjsimons-at-alum.mit.edu, 03/15/2010
% Get the product filter coefficients
[h0,f0]=wc('Daubechies',2);
% Get the lowpass (H0) and highpass (H1) coefficients of the ANALYSIS
% Get the lowpass (F0) and highpass (F1) coefficients of the SYNTHESIS
[H0,H1,F0,F1]=prodco(f0,h0);
% Now the special ones for the edges, e.g. from
% http://www.pacm.princeton.edu/~ingrid/publications/54.txt
% http://www.nr.com/contrib/beylkin/D04qmf.txt
% Left, lowpass
% LLO=[ d4h1l1 d4h1l2 d4h1l3 0 0; ...
% d4h2l1 d4h2l2 d4h2l3 d4h2l4 d4h2l5];
LLO=[ 0.603332511928053 0.690895531839104 -0.398312997698228 0 0; ...
0.0375174604524466 0.457327659851769 0.850088102549165 0.223820356983114 -0.129222743354319];
% Left, highpass
% MINUS EVERYTHING TO COMPARE TO BEYLKIN BUT CORRECT ACCORDING TO INGRID
% LHI=[ d4g1l1 d4g1l2 d4g1l3 0 0; ...
% [ d4g2l1 d4g2l2 d4g2l3 d4g2l4 d4g2l5];
LHI=[-0.796543516912183 0.546392713959015 -0.258792248333818 0 0; ...
0.0100372245644139 0.122351043116799 0.227428111655837 -0.836602921223654 0.483012921773304];
% Right, lowpass
% RLO=[ d4h2r5 d4h2r4 d4h2r3 d4h2r2 d4h2r1; ...
% 0 0 d4h1r3 d4h1r2 d4h1r1];
RLO=[ 0.443149049637559 0.767556669298114 0.374955331645687 0.190151418429955 -0.194233407427412; ...
0 0 0.230389043796969 0.434896997965703 0.870508753349866];
% Right, hipass
% MINUS EVERYTHING TO COMPARE TO BEYLKIN AND ALSO COMPARED TO INGRID
% RHI=[ d4g2r5 d4g2r4 d4g2r3 d4g2r2 d4g2r1; ...
% 0 0 d4g1r3 d4g1r2 d4g1r1];
RHI=[ 0.231557595006790 0.401069519430217 -0.717579999353722 -0.363906959570891 0.371718966535296;...
0 0 -0.539822500731772 0.801422961990337 -0.257512919478482];
% Rearrange the coefficients for the edge calculations
% This is what will happen in D4BOXSTEP to give f(1,2,3,k+1,k+2,k+3)
LFT=[LLO ; 0 0 0 H0(4:-1:3) ; LHI ; 0 0 0 H1(4:-1:3)];
% Check the orthogonality
difer(LFT'*LFT-eye(length(LLO)),[],[],NaN)
% This is what will happen in D4BOXSTEP to give f(k-2,k-1,k,2k-2,2k-1,2k)
RGT=[H0(2:-1:1) 0 0 0 ; RLO ; H1(2:-1:1) 0 0 0 ; RHI];
% Check the orthogonality
difer(RGT'*RGT-eye(length(RLO)),[],[],NaN)
% Preconditioning coefficients
% On the left, forward
% HERE WE READ DOWN INGRID'S COLUMNS AND THE BEYLKIN LABELS MAKE SENSE
% LF=[ d4pc1l1 0; ...
% d4pc1l2 d4pc2l2];
LF=[0.324894048898962 0 ; ...
0.0371580151158803 1.00144540498130];
% On the left, inverse
% LI=[ d4ipc1l1 0; ...
% d4ipc1l2 d4ipc2l2];
LI=[ 3.07792649138669 0 ; ...
-0.114204567242137 0.998556681198888];
% Check the inverse
difer(inv(LF)-LI,[],[],NaN)
% On the right, forward
% HERE THE LABELING SITS WELL WITH BEYLKIN AND WE READ INGRIDS COLUMNS WITH PERMUTATION THROUGH CENTER
% RF=[ d4pc1r1 d4pc1r2; ...
% 0 d4pc2r2];
RF=[2.09629288435324 -0.800813234246437; ...
0 1.08984305289504];
% On the right, inverse
% RI=[ d4ipc1r1 d4ipc1r2; ...
% 0 d4ipc2r2];
RI=[0.477032578540915 0.350522032550918; ...
0 0.917563310922261];
% Check the inverse
difer(inv(RF)-RI,[],[],NaN)
% Collect all of these filter coefficients into a structure
cofs.H0=H0; cofs.H1=H1; cofs.F0=F0; cofs.F1=F1;
% Edge coefficients
cofs.LLO=LLO; cofs.LHI=LHI;
cofs.RLO=RLO; cofs.RHI=RHI;
% Combination coefficients
cofs.LFT=LFT;
cofs.RGT=RGT;
% Preconditioners
cofs.LF=LF; cofs.LI=LI;
cofs.RF=RF; cofs.RI=RI;