
目录
1.算法仿真效果
matlab2022a仿真结果如下:






2.MATLAB程序
for nn=1:Repeat
% 开始循环,循环变量为nn,从1到Repeat(即20次),每次循环模拟一个不同的衍射距离下的情况
FrDiffract=FreeDiffract(Obj,Lamda,dx,DDist);
% 调用FreeDiffract函数(其具体功能应在外部已定义好,从函数名推测是用于计算自由空间衍射相关的操作),传入衍射屏对象Obj、入射光波长Lamda、抽样间隔dx以及当前的衍射距离DDist作为参数,得到当前衍射距离下的衍射结果,存储在FrDiffract变量中
FrDiffract_A=abs(FrDiffract);
% 对FrDiffract进行取绝对值操作,得到其幅值信息,将结果存储在FrDiffract_A变量中,可能是因为在光学衍射中,有时候只关注光场强度等幅值相关的物理量,所以提取幅值部分进行后续分析
if mod(nn,5)==1
% 判断当前循环次数nn除以5的余数是否等于1,如果满足该条件,则执行以下代码块,目的可能是每隔一定次数(这里是每5次)进行一次特定的图像显示等操作,方便查看部分关键步骤下的衍射结果图像
figure;
% 创建一个新的图形窗口,用于展示当前衍射距离下的图像
imshow(FrDiffract_A,[0 1]);
% 在新创建的图形窗口中显示FrDiffract_A对应的图像,将图像的显示范围限定在[0, 1]区间(可能是为了更好地显示图像的对比度、强度分布等情况,使图像可视化效果更好)
text_buffer =strcat(' Diffraction distance=',num2str(DDist*1e-3),'mm. Press any key ');%显示
% 重新拼接一段文本信息,包括固定文本 'Diffraction distance=' 以及将当前衍射距离DDist乘以1e-3转换为毫米单位后再转换为字符串形式(将微米单位转换为毫米单位便于更直观地显示距离数值),拼接后的结果存储在text_buffer变量中,用于后续作为图像标题等显示相关信息
title(text_buffer);
% 为当前显示的图像添加标题,标题内容就是前面拼接好的text_buffer变量中的文本信息,用于说明当前图像对应的衍射距离情况
end
%--Comparison---
% 以下代码部分用于进行一些对比分析相关的操作,比如计算衍射前后某些物理量的比例、信噪比等
FrDiffract_AS=sum(sum(FrDiffract_A));%
% 计算FrDiffract_A中所有元素的总和,即将当前衍射距离下的光场幅值信息进行求和,存储在FrDiffract_AS变量中,同样可能用于与前面的Obj_AS等进行对比分析,以了解衍射过程中能量等物理量的变化情况
Alfa=FrDiffract_AS/Obj_AS;
% 计算一个比例系数Alfa,其值为当前衍射距离下光场幅值总和(FrDiffract_AS)与输入衍射屏的元素总和(Obj_AS)的比值,这个系数可能在后续分析衍射前后的某种比例关系、归一化等操作中有重要作用
SNR(nn)=FrDiffract_AS/sum(sum(abs(FrDiffract_A-Alfa*Obj)));
% 计算当前循环次数(即当前衍射距离下)的信噪比(Signal to Noise Ratio,SNR),计算公式为当前衍射距离下光场幅值总和(FrDiffract_AS)除以一个差值的总和(该差值是当前光场幅值分布FrDiffract_A与通过Alfa系数缩放后的输入衍射屏Obj之间的差值的绝对值求和),将计算得到的SNR值存储在SNR数组的第nn个元素中,通过循环逐步构建一个记录不同衍射距离下信噪比的数组
Z(nn)=DDist;
% 将当前的衍射距离DDist存储在数组Z的第nn个元素中,这样Z数组就记录了每次循环对应的衍射距离值,方便后续与SNR数组配合进行绘图等分析操作
DDist=DDist+5.0e+3;
% 将当前的衍射距离DDist增加5.0e+3(即5000微米),为下一次循环模拟下一个更大的衍射距离做好准备,通过不断增加衍射距离来研究不同距离下的衍射特性变化
nn
% 这行代码单独写在这里似乎没有实际作用,可能是在调试过程中用于查看当前循环次数等情况,正常运行时可以忽略其输出效果
end
% 结束循环
figure;plot(Z,SNR,'-b^',...
'LineWidth',1,...
'MarkerSize',6,...
'MarkerEdgeColor','k',...
'MarkerFaceColor',[0.2,0.9,0.5]);
% 创建一个新的图形窗口,并在其中绘制曲线,横坐标为Z数组(记录的是不同的衍射距离值),纵坐标为SNR数组(记录的是对应衍射距离下的信噪比),曲线的样式设置为蓝色('-b^'表示蓝色线条且用三角形标记数据点),同时设置了线宽(LineWidth)、标记大小(MarkerSize)、标记边缘颜色(MarkerEdgeColor)以及标记填充颜色(MarkerFaceColor)等绘图属性,使绘制的曲线在可视化展示时有较好的外观效果
xlabel('衍射距离');
% 为绘制的曲线图形的x轴添加标签,标签内容为 '衍射距离',用于说明横坐标所代表的物理量含义
ylabel('SNR');
% 为绘制的曲线图形的y轴添加标签,标签内容为 'SNR',用于说明纵坐标所代表的物理量含义
[SMax,mt]=max(SNR);
% 从SNR数组中找出最大值以及该最大值对应的索引,最大值存储在SMax变量中,索引存储在mt变量中,通过这个操作可以知道在所有模拟的衍射距离下,信噪比最大时对应的情况
Zt=Z(mt) %Simulation
% 根据找到的最大信噪比对应的索引mt,从Z数组(记录衍射距离的数组)中取出对应的衍射距离值,存储在Zt变量中,该值表示在模拟过程中,信噪比达到最大时的衍射距离情况,用于后续分析、对比等操作,注释中 'Simulation' 表示这是通过模拟计算得到的结果
Zt0=2*(dx*Space).^2/Lamda % Rectangle
% 按照给定的公式(可能是基于某种光学理论或经验公式,从变量来看与抽样间隔dx、Space以及入射光波长Lamda相关)计算一个值,存储在Zt0变量中,从注释 'Rectangle' 推测可能是与矩形相关的某种理论衍射距离值,用于和前面模拟得到的Zt值进行对比分析等操作
3.算法概述
光学涡旋(Optical Vortices)作为一种具有独特相位结构和光场特性的光束,在光学操控、光通信、光学成像等众多领域有着重要的应用。而 Talbot 效应(Talbot Effect),即周期性物体在相干光照明下经过一定传播距离后会出现自身的像重现现象,同样是光学领域中极具研究价值的现象。光学涡旋 Talbot 阵列照明器将光学涡旋与 Talbot 效应相结合,能够产生具有特殊光场分布的阵列照明效果,在光刻、光学微加工、多粒子光学囚禁等应用场景中展现出了很大的优势。
3.1 光学涡旋的产生

3.2 光学涡旋的相位和强度分布特点

也就是说,在不考虑其他损耗等因素的情况下,光强在垂直于传播方向的平面上除了中心暗核区域外,其环状分布的幅值是均匀的,仅相位呈现出螺旋变化的特性。
3.3 Talbot 效应的原理
Talbot 效应是指当一个具有周期性结构的物体(例如周期性的振幅型或相位型光栅等)被相干光照明后,在沿着光传播方向的特定距离上,会周期性地重现物体自身的像(即自成像现象)。

光学涡旋 Talbot 阵列照明器通常是将光学涡旋光束作为入射光,照射到具有特定周期性结构的光学元件(如相位光栅、振幅光栅等)上,然后利用 Talbot 效应,在特定的传播距离处产生阵列形式的光学涡旋分布,实现阵列照明的效果。
4.部分参考文献
[1]韩玉晶.光学涡旋场的产生方法、衍射特性及其应用研究[D].山东师范大学,2006.DOI:10.7666/d.Y920151.
5.程序内容,运行方法和源码获取
5.1 程序包括
matlab程序
5.2 运行方法

1.在matlab的左侧的当前文件夹窗口;
2.点击Runme文件运行即可
5.3 源码获取
step1.打开博客主页的左侧推广栏查看,或扫博客文章底部信息
step2.然后用电脑打开网页链接,输入文章标题搜索

705

被折叠的 条评论
为什么被折叠?



