function D=dlmlmp(TH,L,Lmax,sord,xver) % D=DLMLMP(TH,L,Lmax,sord,xver) % % Constructs the (overcomplete) localization kernel for axisymmetric % concentration SINGLE-CAP domains. % % INPUT: % % TH Angular extent of the spherical cap, in degrees % L Bandwidth (maximum angular degree) of the BANDLIMITED functions % Lmax Requested bandwidth of the SPACELIMITED functions (note that % they won't be truly spacelimited unless Lmax is infinity % sord 1 Single cap of diameter 2TH [default] % 2 Double cap left by subtracting belt of width 2TH % xver 1 Verifies GRUNBAUM per order and GLMALPHA for all orders % 0 No excessive verification % % OUTPUT: % % D The (Lmax+1)^2 x (L+1)^2 axisymmetric localization kernel, % Simons, Dahlen, Wieczorek 2006, eq. (5.1). Automatically block % sorted per order as in GLMALPHA. Note that this matrix % contains zeros for all those orders exceeding L. % % If the kernel is (L+1)^2 x (L+1)^2, its eigenfunctions are the % optimally spatially concentrated bandlimited functions g; the % coefficients out to Lmax of the optimally spectrally concentrated % spatially limited eigenfunctions h can be obtained by multiplying the % overcomplete (Lmax+1)^2 x (L+1)^2 kernel D with the (L+1)^2 % coefficients of g. Lmax will be twice the maximum bandwidth of the % spectral estimate sought. % % See also: GLMALPHA, HLMALPHA % % Last modified by fjsimons-at-alum.mit.edu, 04/11/2007 defval('TH',30) defval('L',30) defval('Lmax',200) defval('sord',1) defval('xver',0) if Lmax0 D(alphaLmax(2*m):alphaLmax(2*m+1)-1,alphaL(2*m):alphaL(2*m+1)-1)=Dm; end % Duplicate for the other order in case the region is axisymmetric D(alphaLmax(2*m+1):alphaLmax(2*m+2)-1,alphaL(2*m+1):alphaL(2*m+2)-1)=Dm; if xver==1 % Excessive verification, of commutation relation! [E,Vg,th,C,T,V]=grunbaum(TH,L,m,0); % Be slightly less critical in evaluating the commutativity difer(T*Dm(1:L+1-m,1:L+1-m)-Dm(1:L+1-m,1:L+1-m)*T,9) % imagefnan([],[],D,[],[],[],[],1) % pause end end close(h) % Now check whether or not this obeys the relations we think they should if xver==1 disp('Using excessive verification') [G,V,EL,EM]=glmalpha(TH,L,1,1); if L==Lmax difer(D*G-G*diag(V),9); else % The first L elements of the new eigenfunctions must agree with the % rescaled versions of the old eigenfunctions; beyond that, we have % no control; we check this for the zeroth order only, so we don't % have to go hunt for the dumb indices... it works, anyway for index=1:L+1 difer(indeks(D*G(:,index),1:L+1)-G(1:L+1,index)*V(index),9) end end end eval(sprintf('save %s D TH L Lmax',fname)) end