基于传输矩阵的光束传输

  • angciesun
    了解作者
  • matlab
    开发工具
  • 856B
    文件大小
  • zip
    文件格式
  • 0
    收藏次数
  • 5 积分
    下载积分
  • 1
    下载次数
  • 2022-05-29 13:54
    上传日期
光学传输矩阵+光学传输+matlab,计算任意光场在自由空间的传输
gussianbeampropagation.zip
  • gussianbeampropagation.m
    1.1KB
内容介绍
%% %光传输矩阵相乘算法 Nn=512; d=10e-6; Nx=Nn; Ny=Nn; xmax =Nx/2*d; ymax = Ny/2*d; xg = (-xmax:d:xmax-d); yg = (-ymax:d:ymax-d); lambda=632.8e-9; k=2*pi/lambda; [x,y]=meshgrid(xg,yg); r=sqrt(x.^2+y.^2); w=2e-3; g0=exp(-r.^2/w^2);%高斯光场 I= g0.*conj(g0); mesh(x,y,I) view(0,90); axis equal %% dx=x(1,2)-x(1,1); dy=dx; length1=d*Nn/2; row1=linspace(-length1,length1,Nn); col1=linspace(-length1,length1,Nn); [x1,y1]=meshgrid(row1,col1); z_max = 0.5;%传输距离/ pcs = 50; % Number of pictures zg = linspace(0.2,z_max,pcs); E1=zeros(Nn,Nn); I1=zeros(Nn,Nn); Im0=zeros(Nn,Nn,pcs); Imaxz=zeros(Nn,pcs); for z=1:pcs z_m=zg(z); Mx=exp(-1i*k/z_m*x1(1,:)'*x(1,:)); My=exp(-1i*k/z_m*y(:,1)*y1(:,1)'); M=g0.*exp(1i*k/2/z_m*(x.^2+y.^2)); E1=-1i/lambda/z_m*exp(1i*k*z_m)*exp(1i*k/2/z_m*(x1.^2+y1.^2)).*(Mx*M*My).*(dx)*(dy); I1(:,:)= E1.*conj(E1); Imaxz(:,z)=(I1(Nn/2,:)+I1(Nn/2+1,:))/2; Im0(:,:,z)=I1(:,:); IM0(z)=max(max(I1));%归一化传输最大值 end %% % 测面传输图 figure(1); mesh(zg,col1,Imaxz); view(0,90); colormap(jet) xlabel('z(m)'); ylabel('y(m)');
评论
    相关推荐