我在尝试以不同的传播距离传播涡流光束。我不知道我使用的空间频率是否正确。有人能帮我吗?
在不同的传播距离,光束大小应该增加。它的增加,但我想知道是否空间频率和角谱代码我已经使用是正确的或不
clear all; close all; clc
H=1920;
V=1080;
y=linspace(-(V/2),(V/2)-1,V);
x=linspace(-(H/2),(H/2)-1,H);
x=x*8e-3;%%Scales the hologram in the V direction
y=y*8e-3;%%Scales the hologran in the H direction
[X,Y]=meshgrid(x,y);
phi=angle(X+1i*Y);
rho=sqrt(X.^2+Y.^2);
lambda=633e-6;
w0=1;
k=2*pi/lambda;
zr=k*w0^2/2;
z=4000;
w=w0*sqrt(1+(z/zr)^2);
R=z*(1+(zr/z)^2);
p=0;
l=1;
zi=atan(z/zr);
La=Laguerre(p,abs(l),2*rho.^2/(w0^2));
LG= w0/w*sqrt(2*factorial(p)/(pi*factorial(abs(l)+p)))*(2*rho.^2/w^2).^(abs(l)/2).*La.*exp(1i*(2*p+l+1)*atan(z/zr)).*exp(-rho.^2/w^2).*exp(-1i*k*rho.^2/R).*exp(1i*l*phi);
LG=LG/sqrt(sum(sum(abs(LG).^2)));
ph=angle(LG);
figure(1);
imagesc(ph);
colormap gray;
axis off;
v=abs(LG)/max(max(abs(LG)));%%LG field normalized to unity
%angular spectrum method trial
sx=x(2)-x(1);
sy=y(2)-y(1);
U0=fftshift(fft2(ifftshift(LG)));
fx = (-H/2:H/2-1)*sx; % x-axis frequency points
fy = (-V/2:V/2-1)*sy; % y-axis frequency points
[Fx,Fy]=meshgrid(fx,fy);
U1=exp(1i*k*z*sqrt(1-(lambda*Fx).^2-(lambda*Fy).^2));
pw=fftshift(ifft2(ifftshift(U1.*U0)));
figure(2);
imagesc(abs(pw).^2);
colormap("gray");
1条答案
按热度按时间iqjalb3h1#
与
这是好事还是坏事?