Matlab:拉盖尔-高斯光束单缝衍射
代码:
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:拉盖尔-高斯光束单缝衍射相关推荐
- 厄米高斯光束 matlab,拉盖尔高斯光束_厄米高斯光束MATLAB仿真
<拉盖尔高斯光束_厄米高斯光束MATLAB仿真>由会员分享,可在线阅读,更多相关<拉盖尔高斯光束_厄米高斯光束MATLAB仿真(4页珍藏版)>请在人人文库网上搜索. 1.激光原 ...
- Matlab:拉盖尔-高斯光束杨氏双缝干涉
代码: clc clear all close all %% L-G光束双缝干涉 N = 300; %取样点数 lambda = 632e-9; %波长632nm k = 2*pi/lambda; % ...
- 【湍流】基于matlab模拟拉盖尔高斯光束传播的光强
✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信.
- Matlab:拉盖尔-高斯光束光阑衍射
代码: function main() clc; clear; close all; %% /* 参数设置 */ Nxy = 200; %x,y坐标采样点 lambda = 632e-9; %波长为6 ...
- 夫琅禾费单缝衍射matlab分析,夫琅禾费单缝衍射光强分布MATLAB分析毕业设计论文...
夫琅禾费单缝衍射光强分布MATLAB分析毕业设计论文 毕业设计(论文)摘 要衍射为人们所熟悉的现象,对于光的这种特殊现象在很多方面有着应用.在光的衍射的基础上,介绍了什么是夫琅禾费衍射,几种实现夫琅禾 ...
- matlab模拟夫琅禾费单缝衍射,夫琅禾费单缝衍射光强分布MATLAB分析【毕业论文】.doc...
PAGE l 摘 要 衍射为人们所熟悉的现象,对于光的这种特殊现象在很多方面有着应用. 在光的衍射的基础上,介绍了什么是夫琅禾费衍射,几种实现夫琅禾费衍射的方法和原理及光强分布特点,以基尔霍夫积分定理 ...
- matlab模拟高斯光束波前相位分布,光束波前校正与信标研究
光束波前校正与信标研究 [摘要]: 大气湍流引起光波波前的随机扰动,是限制光波大气传输和天文成像分辨率的主 要因素.20世纪70年代发展起来的自适应光学技术能主动校正光波相位畸变,提高 光束远场能量集 ...
- matlab模拟夫琅禾费单缝衍射,基于MATLABGUI的夫琅禾费单缝衍射仿真
基于MATLAB GUI 的夫琅禾费单缝衍射仿真 高峰,赵文丽,曹学成* (山东农业大学信息科学与工程学院,山东泰安271018) 摘要:根据夫琅禾费单缝衍射的基本原理,利用MATLABR2008a ...
- matlab模拟夫琅禾费单缝衍射,夫琅禾费衍射的Matlab仿真
夫琅禾费衍射的Matlab仿真 110512班 11051057 李陟凌 夫琅禾费衍射,是认为光源和观察屏离衍射屏(孔)处于无穷远处的衍射现象.实验装置如图: S为单色点光源,放置在透镜L1的物方焦点 ...
- 【湍流】基于Matlab模拟高斯光束在湍流大气中传输仿真,得到大气湍流相位屏、以及光斑强度变化
✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信.
最新文章
- 总奖金200万的算法赛方案汇总!
- 加班越久故障越多,如何跳出程序员的恶性循环?
- Servlet处理文件下载的编码问题,乱码。
- 来博客园居然有一年了
- 一位做了5年Java开发的读者,跟我说面试题都不会答···
- Rancher Kubernetes Engine(RKE)正式发布:闪电般的Kubernetes安装部署体验 1
- [转载] 【Python】向json文件中追加新的对象
- 计算机网络误区——源目IP和源目MAC变化问题
- oracle 数据库 查看 目录,如何查看oracle数据库服务器名
- php接口和多态的概念以及简单应用
- 物联网是什么,和互联网之间主要有什么区别
- 商业变现永不眠(二) — 如何具体规划自己产品的商业化路径?
- 一部手机即可轻松玩转抖音四大主流变现方式——匀思电商
- 一文读懂微生物扩增子16s测序
- GitHub:git push问题remote:Support for password authentication was removed on August 13,2021.
- Day101.MyBatisPlus(MP):自动填充、乐观锁、分页、逻辑删除、Wrapper条件构造器
- 南理工计算机科学与工程学院,周俊龙 - 南京理工大学 - 计算机科学与工程学院...
- oracle中drop和delete,oracle中delete drop truncate的用法和区别
- Java中的同步方法
- ssm基于BS架构的校园爱心捐赠与物品交换平台的设计与实现毕业设计源码
热门文章
- 用计算机信息术语感恩老师,【感谢老师的对联师恩难忘的对联】_感谢师恩、感恩老师的对联—经典用语大全...
- 基于FFmpeg的视频播放器之九:使用SDL2播放音频
- 【AIQ合集】人工智能技术学习资料年度整理大合集电子书 PDF下载
- ZYNQ+FPGA读取SD卡BMP图片并通过HDMI显示
- c# Socket Udp通讯示例源码
- c语言中为什么无法打开原文件格式,为什么vs2012无法打开源文件graphics.h和bio
- 开网店,网店系统的编程语言分析
- MacOS与Windows快捷键对照
- Java读写文件的常用方法
- Objective-C 信息传递模型 [ ] 发送消息