summaryrefslogtreecommitdiff
path: root/examples/Hermite_demo.m
blob: 59966d9cb245cd9d93119d8bf5e384a271f91fe9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
% Illustrates the use of HermiteGaussianE.m, decompose.m and recompose.m by
% defining an off-center Guassian beam (Fig. 1, Col. 1) and recomposing it 
% in a basis of Hermite Gaussians defined about the center on the figure.
% The recomposed beam is shown in Fig. 1, Col. 2, where we have used the
% first 40 Hermite Gaussian (TEM_mn) modes.  Figure 1, Col. 3 shows the
% difference between the recomposed beam and the original.  Figure 2 shows
% the magnitude of the coefficients of the TEM_(l,m) mode in the
% decomposition.

clear domain;
screensize=0.1;
npts=75;
x=(-screensize:2*screensize/(npts-1):screensize);
y=x;
w=0.022;
R=-1e3;
deltax=1/sqrt(2)*w;
deltay=0*w;
wfactor=1;
lambda=1.064e-6;
ploton=[1,1];
n=40;

[xmesh,ymesh]=meshgrid(x,y);
domain(:,:,1)=xmesh; domain(:,:,2)=ymesh;
q=q_(w,R,lambda);
%zin=exp(-(xmesh.^2+ymesh.^2)/2/q);
zin=HermiteGaussianE([0,0,q_(w*wfactor,R,lambda),lambda],xmesh+deltax,ymesh+deltay);
[coeffs,tmat]=decompose(zin,domain,'hg',n,[q,lambda,1e-6]);
disp(' ');
dispmat(abs(coeffs));
zout=recompose(domain,'hg',coeffs,[q,lambda]);

if ploton(1)==1
    figure(1);
    subplot(331);
    h=pcolor(xmesh,ymesh,abs(zin).^2); set(h,'edgecolor','none'); axis square; colorbar; drawnow; shg;
    title('original intensity');
    subplot(332);
    h=pcolor(xmesh,ymesh,abs(zout).^2); set(h,'edgecolor','none'); axis square; colorbar; drawnow; shg;
    title('recomposed');
    subplot(333);
    h=pcolor(xmesh,ymesh,abs(zout).^2-abs(zin).^2); set(h,'edgecolor','none'); axis square; colorbar; drawnow; shg;
    title('difference');
    subplot(334);
    h=pcolor(xmesh,ymesh,real(zin)); set(h,'edgecolor','none'); axis square; colorbar; drawnow; shg;
    title('original real part');
    subplot(335);
    h=pcolor(xmesh,ymesh,real(zout)); set(h,'edgecolor','none'); axis square; colorbar; drawnow; shg;
    title('recomposed');
    subplot(336);
    h=pcolor(xmesh,ymesh,real(zout)-real(zin)); set(h,'edgecolor','none'); axis square; colorbar; drawnow; shg;
    title('difference');
    subplot(337);
    h=pcolor(xmesh,ymesh,imag(zin)); set(h,'edgecolor','none'); axis square; colorbar; drawnow; shg;
    title('original imaginary part')
    subplot(338);
    h=pcolor(xmesh,ymesh,imag(zout)); set(h,'edgecolor','none'); axis square; colorbar; drawnow; shg;
    title('recomposed')
    subplot(339);
    h=pcolor(xmesh,ymesh,imag(zout)-imag(zin)); set(h,'edgecolor','none'); axis square; colorbar; drawnow; shg;
    title('difference');
end

if length(ploton)>=2 && ploton(2)==1
    figure(2);
    ls=(0:size(coeffs,1)-1);
    ms=(0:size(coeffs,2)-1);
    h=pcolor(ls,ms,log10(abs(coeffs.'))); axis square; colorbar; drawnow; shg;
    title('Log_{10} of coefficients of the modes in the decomposition');
    xlabel('l');
    ylabel('m');
end