1基于Matlab的矩孔菲涅尔衍射仿真摘要光学试验中衍射实验是非常重要的实验.光的衍射是指光在传播过程中遇到障碍物时能够绕过障碍物的边缘前进的现象,光的衍射现象为光的波动说提供了有力的证据.衍射系统一般有光源、衍射屏和接受屏组成,按照它们相互距离的大小可将衍射分为两大类,一类是衍射屏与光源和接受屏的距离都是无穷远时的衍射,称为夫琅禾费衍射,一类是衍射屏与光源或接受屏的距离为有限远时的衍射称为菲涅尔衍射。本文用Matlab软件主要针对矩孔菲涅尔衍射现象建立了数学模型,对衍射光强分布进行了编程运算,对衍射实验进行了仿真。关键字:Matlab;矩孔菲涅尔衍射;仿真;光学实验AbstractOpticaldiffractionexperimentisaveryimportantexperiment.isthediffractionoflightpropagationoflightintheobstaclesencounteredintheprocesstobypasstheobstacleswhentheforwardedgeofthephenomenonoflightdiffractionphenomenonofthewavetheoryoflightprovidesastrongEvidence.diffractionsystemsgenerallyhavelight,diffractionscreenandacceptthescreencomposition,sizeaccordingtotheirdistancefromeachotherdiffractioncanbedividedintotwocategories,oneisthediffractionscreenandthelightsourceandthereceivingscreenisinfinitywhenthedistancebetweenthediffractionKnownasFraunhoferdiffraction,oneisdiffractionscreenandthelightsourceoracceptalimitedawayfromthescreenwhenthediffractioniscalledFresneldiffraction.Inthispaper,MatlabsoftwareonatypicalphenomenonofamathematicalmodelofsingleslitFresneldiffraction,thediffractionintensitydistributionoftheprogrammingoperation,thediffractionexperimentissimulated.Keyword:matlab;singleslitFresneldiffraction;simulation;opticalexperiment一、菲涅尔衍射原理由惠更斯-菲涅尔原理可知接收屏上的P点的复振幅可以表示为𝐸̃(𝑃)=𝐶∬𝐸̃(Q)exp(𝑖𝑘𝑟)𝑟𝛴K(θ)dσ(1)其中𝐸̃(Q)为衍射屏上的复振幅分布,K(θ)为倾斜因子。根据基尔霍夫对此公式的完善,有:C=1𝑖𝜆2K(θ)=1+𝑐𝑜𝑠𝜃2≈1(1)式中给出的脉冲响应比到达时相当复杂,不过,根据实际条件可之简化。为此,首先将r表达为r=z[1+(𝑥−𝑥0𝑧)2+(𝑦−𝑦0𝑧)2]12⁄(2)将上式作二项式展开得:r=z[1+(𝑥−𝑥0)2+(𝑦−𝑦0)22𝑧2−[(𝑥−𝑥0)2+(𝑦−𝑦0)2]28𝑧4+⋯](3)当衍射孔径和观察范围确定后,只要z取足够的大,对于相位因子而言,(3)的展开式中只取前两项而舍弃全部高次项是可以的,也就是r取这样的近似值不会引起明显的相位误差,这种近似称为菲涅尔近似。r=z[1+12(𝑥−𝑥0𝑧)2+12(𝑦−𝑦0𝑧)2](4)设衍射屏上点的坐标为(x1,y1),接收屏上点的坐标为(x,y),衍射屏与接收屏间距离为z1,当满足菲涅尔近似条件时,即𝑘8𝑧13[(𝑥−𝑥1)2+(𝑦−𝑦1)2]𝑚𝑎𝑥2≪𝜋(5)此时可得到菲涅尔衍射的计算公式𝐸̃(x,y)=exp(𝑖𝑘𝑧1)iλ𝑧1∬𝐸̃(𝑥1,𝑦1)∞−∞exp{𝑖𝑘2𝑧1[(𝑥−𝑥1)2+(𝑦−𝑦1)2]}𝑑𝑥1𝑑𝑦1(6)把上式指数项中的二次项展开,并改写成傅里叶变换的形式,可以写成𝐸̃(x,y)=exp(𝑖𝑘𝑧1)iλ𝑧1exp[𝑖𝑘2𝑧1(𝑥2+𝑦2)]f{𝐸̃(𝑥1,𝑦1)exp[𝑖𝑘2𝑧1(𝑥12+𝑦12)]}(7)上式为菲涅尔衍射的傅里叶变换表达式,它表明除了积分号前面的一个与x1、y1无关的振幅和相位因子外,菲涅尔衍射的复振幅分布是孔径平面的复振幅分布和一个二次相位因子乘积的傅里叶变换。相对于夫琅和费衍射而言,菲涅尔衍射的观察屏距衍射屏不太远。在菲涅尔衍射中,输入变量和输出变量分别为衍射孔径平面的光场分布和观察平面的光场以及光强分布,考虑到这三个量都是二维分布,而且Matlab主要应用于矩阵数值运算,所以本程序选择用二维矩阵来存储衍射孔径平面和观察平面的场分布,并分别以矩阵的列数和行数来对应平面的直角坐标值(x,y)以及(x1,y1)。二.MATLAB仿真模拟用MATLAB分别构造表示衍射屏和接收屏的二维矩阵。注意使两矩阵阶次相同,考虑到运算量的要求,采样点数不能过多,所以每个屏的x和y方向各取200点进行运算。根据式(7),选取合适的衍射屏和接收屏尺寸和相距的距离,模拟结果如下:取典型的He-Ne激光器波长λ=632.8nm,固定衍射屏和接收屏尺寸和相距的距离,分别取不同的矩孔半径。3%所有长度单位为毫米lamda=632.8e-6;k=2*pi/lamda;z=1000;%先确定衍射屏N=300;%圆屏采样点数a=0.15;b=0.15;[m,n]=meshgrid(linspace(-N/2,N/2-1,N));I=rectpuls(m/(2*a)).*rectpuls(n/(2*b));q=exp(j*k*(m.^2+n.^2)/2/z);subplot(2,2,1);%矩孔图像画在2行2列的第一个位置imagesc(I)%画衍射屏的形状colormap([000;111])%颜色以黑白区分axisimagetitle('衍射屏形状')L=300;M=300;%取相同点数用于矩阵运算[x,y]=meshgrid(linspace(-L/2,L/2,M));h=exp(j*k*z)*exp((j*k*(x.^2+y.^2))/(2*z))/(j*lamda*z);%接收屏H=fftshift(fft2(h));B=fftshift(fft2(I));%矩孔频谱G=H.*B;%公式中为卷积,空间域中相卷相当于频域中相乘U=fftshift(ifft2(G));%求逆变换,得到复振幅分布矩阵Br=(U/max(U));%归一化subplot(2,2,2);imshow(abs(U));axisimage;colormap(hot)%figure,imshow(C);title('衍射后的图样');subplot(2,2,3);mesh(x,y,abs(U));%画三维图形subplot(2,2,4);plot(abs(Br))4图1(a=b=0.15mm,衍射距离1m)图2(a=b=0.15mm,衍射距离0.5m)5图3(a=b=0.2mm,衍射距离1m)图4(a=b=0.2mm,衍射距离0.5m)6图5(a=b=0.3mm,z=1m)图6(a=b=0.3mm,z=0.5m)7图7(a=b=0.4mm,z=1m)图7(a=b=0.4mm,z=0.5m)8总结:当矩孔大小逐渐增大时,可以看到由于菲涅尔衍射现象的减弱,干涉现象逐渐明显。相同衍射级数上,能量分层逐渐明显。对于相同孔径大小的矩孔,当观察屏距离越来越近时,菲涅尔衍射现象越明显,衍射条纹也更精细。