【光学】基于matlab实现圆孔的菲涅尔衍射仿真

1 简介

根据惠更斯 - 菲涅耳原理,光的衍射是光束内部的次波之间的相干叠加,衍射光波场的光振动符合菲涅耳积分公式。但直接运用菲涅耳积分公式计算衍射光场是很困难的。对于夫琅和费衍射(远场衍射),在光源和接收屏距离衍射屏均为无穷远的情况下,通过较为简单的积分运算即可得到较精确的衍射光振动和光强分布。而对于菲涅耳衍射(近场衍射),即光源和接收屏距离衍射屏至少一个为有限远,只能通过近似方法(如半波带法)半定量地得出轴上一点的衍射光强。当轴上点对应的半波带数 k = 奇数时,则该点为亮点,若半波带数 k = 偶数时,则该点为暗点。

轴外光强分布的定量分析难度很大,目前未见系统的研究。MATLAB 软件具有强大的计算和可视化功能,可以较为精确地模拟光学实验的结果,可避开复杂的光学理论推导以及条件苛刻的光学实验测量,使复杂、抽象的光学现象

变得具体、直观。

【光学】基于matlab实现圆孔的菲涅尔衍射仿真_第1张图片

【光学】基于matlab实现圆孔的菲涅尔衍射仿真_第2张图片

2 部分代码

%圆孔衍射 菲涅尔clearlamda=633*10^(-6);k=2*pi/lamda;%?¨??p=1;z=100;fu=sqrt(-1);d=0.1;[X,Y]=meshgrid(-p:0.005:p,-p:0.005:p);for i=1:size(X,1)    for j=1:size(Y,1)        if X(i,j).^2+Y(i,j).^2<=(d/2)^2            A(i,j)=1;        else            A(i,j)=0;        end     endendendfigure(1)subplot(2,2,1);imshow(A,[])subplot(2,2,2);imshow(aabss,[])colormap(gray);subplot(2,2,3);[i,j]=size(aabss);plot(x,B)subplot(2,2,4);surfl(aabss)shading interpcolormap(gray)axis off

3 仿真结果

【光学】基于matlab实现圆孔的菲涅尔衍射仿真_第3张图片

4 参考文献

[1]陈丽娜, 陆霁, 朱伟玲. 基于MATLAB对菲涅耳圆孔衍射的模拟[J]. 实验室科学, 2014, 17(4):4.

博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。

部分理论引用网络文献,若有侵权联系博主删除。

你可能感兴趣的:(物理应用,matlab,开发语言,图像处理)