紧聚焦涡旋光束matlab gui设计

前言

先前说过使用matlab去实现紧聚焦涡旋光束的仿真,但是由于时间的问题,一直没有撰写博客,今天乘着晚上有点时间,将自己的完成结果进行上传,供小伙伴们一览

基本概念

对于涡旋光束的基本概念,大家感兴趣的可以看我这篇博客:
链接:涡旋光束基本概念介绍
但是最近时常有小伙伴向我询问紧聚焦涡旋光束仿真的问题,我之前的一篇博客已经分享过的我部分源代码,但是不是全部,所以很多小伙伴会有比较多的疑问,今天我将一篇论文里面的紧聚焦涡旋光束的公式进行仿真,利用MATLAB里面的appdesinger将所有的情况汇总在一起,以供大家使用。

界面介绍

首先看下我设计的界面,界面设计很简单,我主要想解释一下里面的部分东西
在这里插入图片描述
在这里插入图片描述
首先是我的光束类型(其实这里写错了,应该是光束的偏振类型):

  • 线偏振
  • 圆偏振
  • 径向偏振
  • 方位角偏振

在这里插入图片描述
** 第二个就是这个地方需要注意**
这里的NA必须小于介质折射率,其他的关于界面的东西我觉得都没有必要再去解释说明了,大家可以直接看懂,话不多说,咱们直接实操试一下

实际操作

首先选择线偏振

在这里插入图片描述

** 径向偏振**

在这里插入图片描述
后面咱们就不去实操了,大家有需要的可以联系我,向我寻求源代码

源码一览

if choicevalue == "线偏振"
    E1=sqrt(cos(theta)).*sin(theta).*l.*exp(1i*k*z*cos(theta)).*((cos(theta)-1).*exp(1i*phi).*besselj(m+2,beta)+...
        (cos(theta)-1).*exp(-1i*phi).*besselj(m-2,beta)-2*cos(phi).*(cos(theta)+1).*besselj(m,beta));
    E2=sqrt(cos(theta)).*sin(theta).*l.*exp(1i*k*z*cos(theta)).*((cos(theta)-1).*exp(1i*phi).*besselj(m+2,beta)-...
        (cos(theta)-1).*exp(-1i*phi).*besselj(m-2,beta)+2*1i*sin(phi).*(cos(theta)+1).*besselj(m,beta));
    E3=sqrt(cos(theta)).*sin(theta).^2.*l.*exp(1i*k*z*cos(theta)).*(exp(1i*phi).*besselj(m+1,beta)-exp(-1i*phi).*besselj(m-1,beta));
    
    
    %% 将符号变成函数
    % E1=eval(['@(theta)',vectorize(E1)]);
    % E2=eval(['@(theta)',vectorize(E2)]);
    % E3=eval(['@(theta)',vectorize(E3)]);
    
    Ex=A/2*1i^(m+1)*exp(1i*m*Phi).*sum(E1,3);
    Ey=A/2*1i^(m)*exp(1i*m*Phi).*sum(E2,3);
    Ez=-A*1i^(m)*exp(1i*m*Phi).*sum(E3,3);
    I1 = Ex.*conj(Ex)+Ey.*conj(Ey)+Ez.*conj(Ez);
    E = I1./max(max(I1));
end

if choicevalue =="圆偏振"
    E1 = sqrt(cos(theta)).*sin(theta).*l.*exp(1i*k*z*cos(theta)).*((cos(theta)-1).*besselj(m+2,beta)-...
        (cos(theta)+1).*besselj(m,beta));
    E2 = sqrt(cos(theta)).*sin(theta).*l.*exp(1i*k*z*cos(theta)).*((cos(theta)-1).*besselj(m+2,beta)+...
        (cos(theta)+1).*besselj(m,beta));
    E3 = sqrt(cos(theta)).*sin(theta).^2.*l.*exp(1i*k*z*cos(theta)).*besselj(m+1,beta);
    Ex = A/sqrt(2)*1i^(m+1).*exp(1i*(m+1)*Phi).*sum(E1,3);
    Ey = A/sqrt(2)*1i^(m).*exp(1i*(m+1)*Phi).*sum(E2,3);
    Ez = -sqrt(2)*A*1i^(m).*exp(1i*(m+1).*Phi).*sum(E3,3);
    I1 = Ex.*conj(Ex)+Ey.*conj(Ey)+Ez.*conj(Ez);
    E = I1./max(max(I1));
end

需要的话请联系,收藏点赞以及给我一点建议就更好啦

  • 29
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 24
    评论
评论 24
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值