MATLAB高斯光束透镜焦面衍射数值计算

%高斯光束透镜焦面衍射数值计算
clear;
clc;
tic;
n=1.5062;%1064nm 波长折射率,k9 玻璃
d=3; % 透镜中心厚度
RL=0.025e3;% 透镜凸面曲率半径
f=RL/(n-1);%透镜的焦距
R0=1;%入射光束半径
lambda=1.064e-3;
k=2*pi/lambda;
phy=lambda/pi/R0;
z=f;
mr2=51;
ne2=61;
mr0=81;
while sqrt(R0^2+z^2)-sqrt(R0^2*(1-1/mr0)^2+z^2)>lambda/20
mr0=mr0+1;
end
ne0=mr0;
rmax=5*f*phy;
r=linspace(0,rmax,mr2);
eta=linspace(0,2*pi,ne2);
[rho,theta]=meshgrid(r,eta);
[x,y]=pol2cart(theta,rho);
r0=linspace(0,3*R0,mr0);
eta0=linspace(0,2*pi*(ne0-1),ne0-1);
[rho0,theta0]=meshgrid(r0,eta0);
[x0,y0]=pol2cart(theta0,rho0);
deta=3*R0/(mr0-1)*2*pi/(ne0-1);
E2=zeros(size(x));
E1=exp(-(x0.^2+y0.^2)/R0^2);
for gk=1:ne2
for df=1:mr2
Rrho=sqrt((x(gk,df)-x0).^2+(y(gk,df)-y0).^2+z^2);
Rtheta=z./Rrho;
opd=exp(j*k*((n-1)*(sqrt(RL^2-rho0.^2)-(RL-d))+d));
Ep=-j/lambda/2*exp(Rrho*j*k).*(1+Rtheta)./Rrho*deta.*rho0.*opd.*E1;
E2(gk,df)=sum(Ep(:));
end
end
Ie=conj(E2).*E2;
figure;
surf(x,y,Ie);
shading interp;
grid off;
box on;
toc;

在这里插入图片描述
本程序摘自《MATLAB仿真及其在光学课程中的应用》一书第六章

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值