代码:

function main()
clc;
clear;
close all;
%% 参数设置
%   /* 公共参数 */
Nxy = 200;          %取样点数
lambda = 632e-9;    %波长632nm
k = 2*pi/lambda;    %波数
p = 0;
z = 0;
%% 不同拓扑荷数的单缝衍射图样
w0 = 1e-3;          %高斯项的束腰 1mm
d = 1e-3;           %缝宽 1mm
zf = 0.5;           %传输距离0.5m
Z_R = pi*w0^2/lambda;      %瑞利长度
w_z = w0*sqrt(1+(z/Z_R)^2);%光束在z位置的半径
%   /* 坐标设置 */
[x,y] = meshgrid(linspace(-1.5*w0,1.5*w0,Nxy));   %近场坐标
[theta,r] = cart2pol(x,y);
[xf,yf] = meshgrid(linspace(-2e-3,2e-3,Nxy)); %积分坐标
Ef = zeros(Nxy);
for m = -1:1              %拓扑荷数-1,0,1tic%   /* 光源部分 z=0时的L-G光束 */E0 = 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));I0 = E0.*conj(E0);      I0 = I0/max(max(I0));figure(1);subplot(1,3,m+2);mesh(x*1e2,y*1e2,I0);view(2);axis square;set(gca,'fontname','times new roman','fontsize',16);    %设置图形对象属性title(['m = ',num2str(m)],'fontname','华文中宋','fontsize',16);xlabel('{\itx}/cm','fontname','times new roman','fontsize',16);ylabel('{\ity}/cm','fontname','times new roman','fontsize',16);zlabel('归一化强度','fontname','华文中宋','fontsize',16);if m == 1suptitle('不同拓扑荷数对应的光源光场');end%   /* 单缝衍射 */for a = 1:Nxyfor b = 1:NxyEf(a,b) = (-1i/lambda/zf)*exp(1i*k*zf)*sum(sum(E0.*SingleSeam(E0,d,3*w0).*exp(1i*k/2/zf*((xf(a,b)-x).^2+(yf(a,b)-y).^2))));endendIf = Ef.*conj(Ef);      If = If/max(max(If));figure(2);subplot(1,3,m+2);mesh(xf*1e2,yf*1e2,If);colormap gray;view(2);axis square;set(gca,'fontname','times new roman','fontsize',16);    %设置图形对象属性title(['m = ',num2str(m)],'fontname','华文中宋','fontsize',16);xlabel('{\itx}/cm','fontname','times new roman','fontsize',16);ylabel('{\ity}/cm','fontname','times new roman','fontsize',16);zlabel('归一化强度','fontname','华文中宋','fontsize',16);if m == 1suptitle(['{\it\sigma}=',num2str(w0*1e3),'mm,{\ita}=',num2str(d*1e3),'mm,{\itz}= ',num2str(zf),'m时,衍射图样随拓扑荷数的变化']);endtoc
end
%% 不同缝宽时的衍射图样
w0 = 2e-3;          %高斯项的束腰 2mm
m = 1;              %拓扑荷数 1
zf = 0.5;           %传输距离0.5
Z_R = pi*w0^2/lambda;      %瑞利长度
w_z = w0*sqrt(1+(z/Z_R)^2);%光束在z位置的半径
%   /* 坐标设置 */
[x,y] = meshgrid(linspace(-1.5*w0,1.5*w0,Nxy));   %近场坐标
[theta,r] = cart2pol(x,y);
[xf,yf] = meshgrid(linspace(-3e-3,3e-3,Nxy)); %积分坐标
E0 = 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));
I0 = E0.*conj(E0);      I0 = I0/max(max(I0));
figure(3);mesh(x*1e2,y*1e2,I0);
view(2);
set(gca,'fontname','times new roman','fontsize',16);    %设置图形对象属性
title(['m = ',num2str(m)],'fontname','华文中宋','fontsize',16);
xlabel('{\itx}/cm','fontname','times new roman','fontsize',16);
ylabel('{\ity}/cm','fontname','times new roman','fontsize',16);
zlabel('归一化强度','fontname','华文中宋','fontsize',16);
for d = 0.2e-3:0.2e-3:0.6e-3        %d = 0.2,0.4,0.6mmtic%   /* 单缝衍射 */for a = 1:Nxyfor b = 1:NxyEf(a,b) = (-1i/lambda/zf)*exp(1i*k*zf)*sum(sum(E0.*SingleSeam(E0,d,3*w0).*exp(1i*k/2/zf*((xf(a,b)-x).^2+(yf(a,b)-y).^2))));endendIf = Ef.*conj(Ef);      If = If/max(max(If));figure(4);subplot(1,3,round(d*1e3/0.2));mesh(xf*1e2,yf*1e2,If);colormap gray;view(2);axis square;set(gca,'fontname','times new roman','fontsize',16);    %设置图形对象属性title(['d = ',num2str(d*1e3),'mm'],'fontname','华文中宋','fontsize',16);xlabel('{\itx}/cm','fontname','times new roman','fontsize',16);ylabel('{\ity}/cm','fontname','times new roman','fontsize',16);zlabel('归一化强度','fontname','华文中宋','fontsize',16);if round(d*1e3/0.2) == 3suptitle(['{\it\sigma}=',num2str(w0*1e3),'mm,{\itl}=',num2str(m),',{\itz}= ',num2str(zf),'m时,衍射图样随缝宽的变化']);endtoc
end
%% 不同光斑半径时的衍射图样
d = 1e-3;           %缝宽1mm
m = 1;              %拓扑荷数 1
zf = 0.5;           %传输距离0.5m
for w0 = 1e-3:1e-3:3e-3        %d = 1,2,3mmticZ_R = pi*w0^2/lambda;      %瑞利长度w_z = w0*sqrt(1+(z/Z_R)^2);%光束在z位置的半径%   /* 坐标设置 */[x,y] = meshgrid(linspace(-1.5*w0,1.5*w0,Nxy));   %近场坐标[theta,r] = cart2pol(x,y);[xf,yf] = meshgrid(linspace(-4e-3,4e-3,Nxy)); %积分坐标E0 = 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));I0 = E0.*conj(E0);      I0 = I0/max(max(I0));figure(5);subplot(1,3,w0*1e3);mesh(x*1e2,y*1e2,I0);view(2);axis square;set(gca,'fontname','times new roman','fontsize',16);    %设置图形对象属性title(['\it\sigma = ',num2str(w0*1e3),'mm'],'fontname','华文中宋','fontsize',16);xlabel('{\itx}/cm','fontname','times new roman','fontsize',16);ylabel('{\ity}/cm','fontname','times new roman','fontsize',16);zlabel('归一化强度','fontname','华文中宋','fontsize',16);if m == 3e-3suptitle('不同光斑半径对应的光源光场');end%   /* 单缝衍射 */for a = 1:Nxyfor b = 1:NxyEf(a,b) = (-1i/lambda/zf)*exp(1i*k*zf)*sum(sum(E0.*SingleSeam(E0,d,3*w0).*exp(1i*k/2/zf*((xf(a,b)-x).^2+(yf(a,b)-y).^2))));endendIf = Ef.*conj(Ef);      If = If/max(max(If));figure(6);subplot(1,3,w0*1e3);mesh(xf*1e2,yf*1e2,If);colormap gray;view(2);axis square;set(gca,'fontname','times new roman','fontsize',16);    %设置图形对象属性title(['d = ',num2str(d*1e3),'mm'],'fontname','华文中宋','fontsize',16);xlabel('{\itx}/cm','fontname','times new roman','fontsize',16);ylabel('{\ity}/cm','fontname','times new roman','fontsize',16);zlabel('归一化强度','fontname','华文中宋','fontsize',16);if w0 == 3e-3suptitle(['{\ita}=',num2str(d*1e3),'mm,{\itl}=',num2str(m),',{\itz}= ',num2str(zf),'m时,衍射图样随光斑半径的变化']);endtoc
endend
%% 拉盖尔多项式
function result = laguerre(p,l,x)
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
%% 单缝透射函数
function [result] = SingleSeam(E0,d,L)
% d,L分别是缝宽以及x方向的取值长度
[Nx,Ny] = size(E0);
result = zeros(Nx,Ny);
X_begin = ceil((1-d/L)*Nx/2);
X_end = ceil((1+d/L)*Nx/2);
for a = X_begin:X_endresult(:,a) = 1;
endend

结果:



参考文献:
[1]高福海, 陈宝算, 蒲继雄,等. 拉盖尔-高斯光束经单缝后的光强分布和螺旋谱[J]. 激光与光电子学进展, 2011, 000(009):40-46.
[2]王涛, 蒲继雄. 涡旋光束单缝衍射的理论和实验研究[J]. 中国激光, 2009(11):136-141.

Matlab:拉盖尔-高斯光束单缝衍射相关推荐

  1. 厄米高斯光束 matlab,拉盖尔高斯光束_厄米高斯光束MATLAB仿真

    <拉盖尔高斯光束_厄米高斯光束MATLAB仿真>由会员分享,可在线阅读,更多相关<拉盖尔高斯光束_厄米高斯光束MATLAB仿真(4页珍藏版)>请在人人文库网上搜索. 1.激光原 ...

  2. Matlab:拉盖尔-高斯光束杨氏双缝干涉

    代码: clc clear all close all %% L-G光束双缝干涉 N = 300; %取样点数 lambda = 632e-9; %波长632nm k = 2*pi/lambda; % ...

  3. 【湍流】基于matlab模拟拉盖尔高斯光束传播的光强

    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信.

  4. Matlab:拉盖尔-高斯光束光阑衍射

    代码: function main() clc; clear; close all; %% /* 参数设置 */ Nxy = 200; %x,y坐标采样点 lambda = 632e-9; %波长为6 ...

  5. 夫琅禾费单缝衍射matlab分析,夫琅禾费单缝衍射光强分布MATLAB分析毕业设计论文...

    夫琅禾费单缝衍射光强分布MATLAB分析毕业设计论文 毕业设计(论文)摘 要衍射为人们所熟悉的现象,对于光的这种特殊现象在很多方面有着应用.在光的衍射的基础上,介绍了什么是夫琅禾费衍射,几种实现夫琅禾 ...

  6. matlab模拟夫琅禾费单缝衍射,夫琅禾费单缝衍射光强分布MATLAB分析【毕业论文】.doc...

    PAGE l 摘 要 衍射为人们所熟悉的现象,对于光的这种特殊现象在很多方面有着应用. 在光的衍射的基础上,介绍了什么是夫琅禾费衍射,几种实现夫琅禾费衍射的方法和原理及光强分布特点,以基尔霍夫积分定理 ...

  7. matlab模拟高斯光束波前相位分布,光束波前校正与信标研究

    光束波前校正与信标研究 [摘要]: 大气湍流引起光波波前的随机扰动,是限制光波大气传输和天文成像分辨率的主 要因素.20世纪70年代发展起来的自适应光学技术能主动校正光波相位畸变,提高 光束远场能量集 ...

  8. matlab模拟夫琅禾费单缝衍射,基于MATLABGUI的夫琅禾费单缝衍射仿真

    基于MATLAB GUI 的夫琅禾费单缝衍射仿真 高峰,赵文丽,曹学成* (山东农业大学信息科学与工程学院,山东泰安271018) 摘要:根据夫琅禾费单缝衍射的基本原理,利用MATLABR2008a ...

  9. matlab模拟夫琅禾费单缝衍射,夫琅禾费衍射的Matlab仿真

    夫琅禾费衍射的Matlab仿真 110512班 11051057 李陟凌 夫琅禾费衍射,是认为光源和观察屏离衍射屏(孔)处于无穷远处的衍射现象.实验装置如图: S为单色点光源,放置在透镜L1的物方焦点 ...

  10. 【湍流】基于Matlab模拟高斯光束在湍流大气中传输仿真,得到大气湍流相位屏、以及光斑强度变化

    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信.

最新文章

  1. 总奖金200万的算法赛方案汇总!
  2. 加班越久故障越多,如何跳出程序员的恶性循环?
  3. Servlet处理文件下载的编码问题,乱码。
  4. 来博客园居然有一年了
  5. 一位做了5年Java开发的读者,跟我说面试题都不会答···
  6. Rancher Kubernetes Engine(RKE)正式发布:闪电般的Kubernetes安装部署体验 1
  7. [转载] 【Python】向json文件中追加新的对象
  8. 计算机网络误区——源目IP和源目MAC变化问题
  9. oracle 数据库 查看 目录,如何查看oracle数据库服务器名
  10. php接口和多态的概念以及简单应用
  11. 物联网是什么,和互联网之间主要有什么区别
  12. 商业变现永不眠(二) — 如何具体规划自己产品的商业化路径?
  13. 一部手机即可轻松玩转抖音四大主流变现方式——匀思电商
  14. 一文读懂微生物扩增子16s测序
  15. GitHub:git push问题remote:Support for password authentication was removed on August 13,2021.
  16. Day101.MyBatisPlus(MP):自动填充、乐观锁、分页、逻辑删除、Wrapper条件构造器
  17. 南理工计算机科学与工程学院,周俊龙 - 南京理工大学 - 计算机科学与工程学院...
  18. oracle中drop和delete,oracle中delete drop truncate的用法和区别
  19. Java中的同步方法
  20. ssm基于BS架构的校园爱心捐赠与物品交换平台的设计与实现毕业设计源码

热门文章

  1. 用计算机信息术语感恩老师,【感谢老师的对联师恩难忘的对联】_感谢师恩、感恩老师的对联—经典用语大全...
  2. 基于FFmpeg的视频播放器之九:使用SDL2播放音频
  3. 【AIQ合集】人工智能技术学习资料年度整理大合集电子书 PDF下载
  4. ZYNQ+FPGA读取SD卡BMP图片并通过HDMI显示
  5. c# Socket Udp通讯示例源码
  6. c语言中为什么无法打开原文件格式,为什么vs2012无法打开源文件graphics.h和bio
  7. 开网店,网店系统的编程语言分析
  8. MacOS与Windows快捷键对照
  9. Java读写文件的常用方法
  10. Objective-C 信息传递模型 [ ] 发送消息