代码:

function main()
clc
clear
close all
%% 环形涡旋光束
N = 200;
lambda = 632e-9;    %波长为632nm
k = 2*pi/lambda;    %波数
w0 = 3;             %束腰半径
x = linspace(-10,10,N);
y = linspace(-10,10,N);
[X,Y] = meshgrid(x,y);
[theta,r] = cart2pol(X,Y);beta = 50*pi/180;
figure;
for m = -4 : 4subplot(3,3,m+5)E1 = (r/w0).^abs(m).*exp(-r.^2/w0^2)*exp(1i*beta).*exp(-1i*m*theta);I1 = E1.*conj(E1);  I1 = I1/max(max(I1));%二维h1 = pcolor(X,Y,I1);colorbar;set(h1,'edgecolor','none','facecolor','interp');title(['m = ',num2str(m)]);axis square;%     %三维%     mesh(X,Y,I1)%     set(gca,'fontname','times new roman','fontsize',16);%     title(['m = ',num2str(m)],'fontname','华文中宋','fontsize',16);%     %xlabel('x/mm','fontname','times new roman','fontsize',16);%     %ylabel('y/mm','fontname','times new roman','fontsize',16);%     %zlabel('归一化强度','fontname','华文中宋','fontsize',16);
end
suptitle('环形涡旋光束:不同拓扑荷数(m)')   %为图一添加总标题
%% 贝塞尔-高斯光束
N = 200;
lambda = 632e-9;    %波长为632nm
k = 2*pi/lambda;    %波数
w0 = 3;             %束腰半径
x = linspace(-5,5,N);
y = linspace(-5,5,N);
[X,Y] = meshgrid(x,y);
[theta,r] = cart2pol(X,Y);
figure;
alpha = 5;
for m = -4 : 4subplot(3,3,m+5)E2 = besselj(m,alpha.*r).*exp(-r.^2/w0^2).*exp(-1i*m*theta); %使用了matlab内置的贝塞尔函数I2 = E2.*conj(E2);  I2 = I2/max(max(I2));%二维h2 = pcolor(X,Y,I2);colorbar;set(h2,'edgecolor','none','facecolor','interp');title(['m = ',num2str(m)]);%colormap(gray);        %输出灰度图像axis square;%     %三维%     mesh(X,Y,I2)           %三维%     set(gca,'fontname','times new roman','fontsize',16);%     title(['m = ',num2str(m)],'fontname','华文中宋','fontsize',16);%     %xlabel('x/mm','fontname','times new roman','fontsize',16);%     %ylabel('y/mm','fontname','times new roman','fontsize',16);%     %zlabel('归一化强度','fontname','华文中宋','fontsize',16);
end
suptitle('贝塞尔-高斯光束:不同拓扑荷数(m)')   %为图二添加总标题
%% 拉盖尔-高斯光束
N = 200;
lambda = 632e-9;    %波长为632nm
k = 2*pi/lambda;    %波数
w0 = 3e-3;          %光斑尺寸
x = linspace(-3*w0,3*w0,N);     y = x;
[X,Y] = meshgrid(x,y);
[theta,r] = cart2pol(X,Y);
Z_R = pi*w0^2/lambda;      %瑞利长度
z = 0;
w_z = w0*sqrt(1+(z/Z_R)^2);%光束在z位置的半径
figure;
p = 2;      %p = 0, 1, 2...;
for m = -4 : 4subplot(3,3,m+5)E3 = sqrt(2*factorial(p)/pi/(p+factorial(abs(m))))*(1/w_z)*(sqrt(2)*r/w_z).^abs(m)....*exp(-r.^2/w_z^2).*laguerre(p,abs(m),2*r.^2/w_z^2).*exp(-1i*m*theta).*exp(-1i*k*z)....*exp(-1i*k*r.^2*z/2/(z^2+Z_R^2))*exp(-1i*(2*p+abs(m)+1)*atan(z/Z_R));I3 = E3.*conj(E3);  I3 = I3/max(max(I3));%     %二维
%     h3 = pcolor(X,Y,I3);
%     colorbar;
%     set(h3,'edgecolor','none','facecolor','interp');
%     title(['m = ',num2str(m)]);
%     %colormap(gray);        %输出灰度图像
%     axis square;%三维mesh(X,Y,I3)           %三维set(gca,'fontname','times new roman','fontsize',16);title(['m = ',num2str(m)],'fontname','华文中宋','fontsize',16);xlabel('x/mm','fontname','times new roman','fontsize',16);ylabel('y/mm','fontname','times new roman','fontsize',16);zlabel('归一化强度','fontname','华文中宋','fontsize',16);
end
suptitle(['拉盖尔-高斯光束:不同拓扑荷数(m)    p = ',num2str(p)])   %为图三添加总标题end
%% 拉盖尔多项式(文献5中的公式)
function result = laguerre(p,l,x)
result = 0;
if p == 0result = 1;
elseif p == 1result = 1+abs(l)-x;
elseresult = (1/p)*((2*p+l-1-x).*laguerre(p-1,abs(l),x)-(p+l-1)*laguerre(p-2,abs(l),x));
end
end

运行结果:






代码仅供参考,不保证正确。
参考文献:
[1]宋晓芳. 不同拓扑荷数的涡旋光束衍射特性研究[D]. 山东师范大学, 2015.
[2]徐丽娟. 涡旋光束的产生及特性研究[D]. 浙江大学, 2014.
[3]吕百达. 激光光学:光束描述、传输变换与光腔技术物理[M]. 高等教育出版社, 2003.
[4]赵麒, 白忠臣, 周骅,等. 拉盖尔-高斯光束作用下熔石英温度及应力研究%Research of temperature and thermal stress of fused silica irradiated by Laguerre-Gaussian beam[J]. 激光技术, 2018, 042(001):121-126.
[5]石业娇. 面向Fredholm微分方程的广义拉盖尔多项式求解方法[J]. 湘潭大学自然科学学报, 2018, 040(001):31-35.

L-G光束相位:

%% 拉盖尔-高斯光束相位
function main()
%%
clc
clear
close all
%% 参数设置
Nxy = 512;          %x,y采样点
lambda = 632e-9;    %波长为632nm
k = 2*pi/lambda;    %波数
w = 3e-3;           %光斑尺寸
%   /* 坐标设置 */
[x,y] = meshgrid(linspace(-5*w,5*w,Nxy));
[theta,r] = cart2pol(x,y);
%   /* L-G光束参数 */
l = input('请输入拓扑荷数l:');         %拓扑荷数
p = input('请输入p:');                 %p = 0, 1, 2...;
z = input('请输入传输距离l:');         %传输距离-
Z_R = pi*w^2/lambda;        %瑞利长度
w_z = w*sqrt(1+(z/Z_R)^2);  %光束在z位置的半径
E = sqrt(2*factorial(p)/pi/(p+factorial(abs(l))))*(1/w_z)*(sqrt(2)*r/w_z).^abs(l)....*exp(-r.^2/w_z^2).*laguerre(p,abs(l),2*r.^2/w_z^2).*exp(-1i*l*theta).*exp(-1i*k*z)....*exp(-1i*k*r.^2*z/2/(z^2+Z_R^2))*exp(-1i*(2*p+abs(l)+1)*atan(z/Z_R));
I = E.*conj(E);  I = I/max(max(I));
figure; mesh(x*1e3,y*1e3,I); view(2);
set(gca,'fontname','times new roman','fontsize',16);
title(['{\itl}=',num2str(l),',{\itp}=',num2str(p),',{\itz}=',num2str(z),'m处的光强'],'fontname','华文中宋','fontsize',16);
xlabel('\itx/mm','fontname','times new roman','fontsize',16);
ylabel('\ity/mm','fontname','times new roman','fontsize',16);
zlabel('归一化强度','fontname','华文中宋','fontsize',16);
phase = angle(E);   phase = 2*pi*phase/max(max(phase));
figure; mesh(x*1e3,y*1e3,phase); view(2);
colormap gray;
xlabel('\itx/mm','fontname','times new roman','fontsize',16);
ylabel('\ity/mm','fontname','times new roman','fontsize',16);
set(gca,'fontname','times new roman','fontsize',16);
title(['{\itl}=',num2str(l),',{\itp}=',num2str(p),',{\itz}=',num2str(z),'m处的相位'],'fontname','华文中宋','fontsize',16);
zlabel('phase','fontname','华文中宋','fontsize',16);
end
%% 拉盖尔多项式
function result = laguerre(p,l,x)
result = 0;
if p == 0result = 1;
elseif p == 1result = 1+abs(l)-x;
elseresult = (1/p)*((2*p+l-1-x).*laguerre(p-1,abs(l),x)-(p+l-1)*laguerre(p-2,abs(l),x));
end
end

Matlab:常见涡旋光束仿真相关推荐

  1. # MATLAB实现聚焦光束仿真

    MATLAB实现聚焦光束仿真 一.基本概念 二. 实验仿真计算 聚焦光束的理论实现 聚焦光束的实现主要是由于基于Debye理论得到,聚焦光束由于其特殊的物理性质在现在科学中有着不可替代的作用,我们现在 ...

  2. Matlab:涡旋光束与平面光波、球面光波干涉

    matlab代码: clc clear all close all %% 涡旋光束与平面光波干涉 N = 300; %取样点数 lambda = 632e-9; %波长632nm k = 2*pi/l ...

  3. 涡旋光束(二)--矢量涡旋光束的介绍

    矢量涡旋光束 前言 矢量光束 矢量光束的数学基础 矢量涡旋光束 前言 本篇博客是专栏MATLAB实现涡旋光束及聚焦仿真实战的第三篇文章,主要是继续介绍涡旋光束的相关内容并做一定的仿真实现,涡旋光束的基 ...

  4. 【光学】基于matlab涡旋光束全息与拓扑荷仿真【含Matlab源码 1945期】

    ⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[光学]基于matlab涡旋光束全息与拓扑荷仿真[含Matlab源码 1945期] 点击上面蓝色字体,直接付费下载,即可. 获取代码方式2 ...

  5. Matlab:实现理想涡旋光束产生

    本文基于光学原理,用Matlab实现理想涡旋光束产生仿真. Project Code % 作者:ZQJ % 日期:2021.7.24 星期六%***********************模拟理想的涡 ...

  6. matlab如何画涡旋光束,技术 | 掌握这些产生涡旋光束的方法,一起来发涡旋光

    自然中有很多涡旋现象 比如 小范围空气涡旋 海洋涡旋 今天,我们也来介绍一下 科学中的涡旋光 无线光通信是一种以激光为载体进行数据.语音及图像等信息传递的技术.互联网产业的迅速发展对通信行业提出了更高 ...

  7. matlab实现多孔干涉,实现涡旋光束及光强图样调制的多孔干涉仪设计研究

    实现涡旋光束及光强图样调制的多孔干涉仪设计研究 [摘要]:光学涡旋是指具有螺旋状波前的特殊光场.涡旋光场中存在光强为零的点,在这点的光场实部和虚部同时为零,相位具有不确定性,我们称之为涡旋核或相位奇异 ...

  8. 涡旋光束基本概念介绍

    涡旋光束及其MATLAB实现 前言 涡旋光束的基本概念 常见的涡旋涡旋光束 涡旋光束的产生方法 前言 笔者新开一块专栏,专门用于讨论整理总结涡旋光束的相关内容,从基本的概念出发,推导相关的公式,并结合 ...

  9. 【光学】基于matlab模拟涡旋光与球面波的干涉含Matlab源码

    1 简介 基于涡旋光与球面波的干涉原理,提出一种物体微位移的光学测量方法.改进马赫泽德干涉光路,其中一束光照射至空间光调制器产生涡旋光束作为参考光,另一束光经透镜变为球面波后照射至物体上,两束光干涉后 ...

最新文章

  1. 七个开发者成就百亿市值公司?这个技术思路如今让阿里发扬光大
  2. 小蠓虫如何灭_怎么杀蠓虫
  3. 力求企业的内部公平性
  4. Kafka如何基于CopyOnWrite实现线程安全的Deque构建
  5. .NET Core 2.1预览分层编译特性
  6. 前端学习(3252):vs code中插件的使用
  7. JVM系列(一)--JVM运行时数据区
  8. 阿里专家常昊:新人如何上手项目管理?
  9. AIX LV删除后,ORACLE数据库文件全部恢复成功
  10. 微信小程序购物车功能实现(干货满满)
  11. AD7124-4 精度
  12. 图像同态滤波 python实现_8图像增强
  13. 普通固定电话机使用与原理简介
  14. 湖南师大acm10015
  15. harry potter
  16. wince 百度地图懒人包_百度地图winCE版 V10.9.2 安卓版
  17. 集线器、路由器、网桥(桥接器)、网关、网线、交换机、中继器(转发器)、网卡工作在哪一层
  18. 【人工智能AI】禅与计算机程序设计艺术:文心一言 vs ChatGPT对比:文心一言当然不仅仅只是“问答对话”那么简单,背后是 “人工智能的全栈技术体系”!
  19. CAN总线协议:标准CAN和扩展CAN
  20. html 文本转语音,百度文字转语音免费接口使用实例

热门文章

  1. 慎用小封装大阻值电阻
  2. i.MX283开发板第一个Linux驱动-LED驱动
  3. Idea创建maven父子工程及其依赖关系
  4. Electron加载网页失败,监听事件处理
  5. Python+Excel系列:批量处理Excel文件的模块—xlwings:创建、保存、打开工作簿,操控工作表和单元格
  6. 【区块链】PoW、PoS、DPoS算法详解及对比
  7. 【FME EXCEL】FME玩转EXCEL小记——不定期更新
  8. intent.setComponent()方法
  9. oracle收集统计信息之analyze
  10. 华师在线计算机考试登陆不上,华师在线首页登录网址