最新圆孔矩孔的菲涅尔衍射模拟(matlab实现)-工程光学.docxVIP

  • 49
  • 0
  • 约2.25千字
  • 约 8页
  • 2020-12-09 发布于天津
  • 举报

最新圆孔矩孔的菲涅尔衍射模拟(matlab实现)-工程光学.docx

专业资料 专业资料 工程光学综合练习 ——圆、矩的菲涅尔衍射模拟 圆和矩的菲涅尔衍射模拟 一、原理 由惠更斯-菲涅尔原理可知接收屏上的P点的复振幅可以表示为 2)=書 H KCQ)凸“时 K(0)de (1) 其中朋7询为衍射屏上的复振幅分布,hl 为倾斜因子。根据基尔霍夫对此公式 的完善,有 设衍射屏上点的坐标为(xi, yi),接收屏上点的坐标为(x, y),衍射屏与接收屏 间距离为zi,当满足菲涅尔近似条件时,即 k/(8z41T3 ) l[l(r 1+ l(y I V|1)IT2] l^max T3 h ⑵ 此时可得到菲涅尔衍射的计算公式 把上式指数项中的二次项展开,并改写成傅里叶变换的形式,可以写成 鈕”詁亠代 f 总血 71)exp X + yijjj (4] 上式为菲涅尔衍射的傅里叶变换表达式,它表明除了积分号前面的一个与 x1、y1无关的振幅和相位因子外,菲涅尔衍射的复振幅分布是径平面的复振幅分 布和一个二次相位因子乘积的傅里叶变换。 相对于夫琅和费衍射而言,菲涅尔衍射的观察屏距衍射屏不太远。在菲涅尔 衍射中,输入变量和输出变量分别为衍射径平面的光场分布和观察平面的光场以 及光强分布,考虑到这三个量都是二维分布,而且Matlab主要应用于矩阵数值运 算,所以本程序选择用二维矩阵来存储衍射径平面和观察平面的场分布,并分别以 矩阵的列数和行数来对应平面的直角坐标值 (x, y)以及(xi, yi)。 二、圆菲涅尔衍射 用MATLAB分别构造表示衍射屏和接收屏的二维矩阵。注意使两矩阵阶次 相同,考虑到运算量的要求,采样点数不能过多,所以每个屏的 x和y向各取 200到300点进行运算。根据式(4),选取合适的衍射屏和接收屏尺寸和相距 的距离,模拟结果如下: 取典型的He-Ne激光器波长)=632.8nm ,固定衍射屏和接收屏尺寸和相距 區JL刑秋100150210250艾右ioo aaa 3oa-2LO -2002JU 區JL刑秋 100 150 210 250 艾右 ioo aaa 3oa -2LO -200 2JU 的距离,分别取不同的圆半径, 得到以下三组衍射图样,其圆半径分别为 12mm, 20mm,50mm 图 1 ( r=12mm ) 3.C疋12J0150100□0100 2001 30020C ?rnJflj国崔 3.C 疋1 2J0 150 100 □0 100 2001 300 20C ?rn Jflj国崔 图 2 (r=20mm ) 图 3(r=50mm) 三、矩的菲涅尔衍射 步骤与上述相同,仅需改变与衍射屏形状对应的矩阵。这里选择矩的长宽相等, 30匚 严「isr10L5C100 200 300 30匚 严「 isr 10L 5C 100 200 300 5 15 Do .O.20 分别为15mm,20mm,30mm,其衍射图样及强度分布如图 4、5、6 图 4 ( a=b=15mm ) 衍射后的囲样 100 20D 300 -200 图 5(a=b=20mm) im 「I亠川: 300 SC 190 50 0CI 2C0 300 2 ,?■ -200 -2QD 图 6(a=b=30mm) % %圆图像画在2行2列的第一个位置 %画衍射屏的形状 %颜色以黑白区分 四、MATLAB程序 %所有长度单位为毫米 lamda=632.8e-6; k=2*pi/lamda; z=1000000; %先确定衍射屏 N=300; %圆屏采样点数 a=15; b=15; [m, n]=meshgrid(li nspace(-N/2,N/2-1,N)); l=rect(m/(2*a)).*rect( n/(2*b)); q=exp(j*k*(m.A2+n.A2)/2/z); subplot(2,2,1); imagesc(l) colormap([0 0 0; 1 1 1]) axis image title(衍射屏形状) 若为圆孔,方框内替换为以下程序 r=12;a=1;b=1; I=zeros(N,N); [m,n]=meshgrid(linspace(-N/ 2,N/2-1,N)); D=((m-a).A2+( n-b).A2).A(1 /2); i=fin d(D=r); l(i)=1; %孔半径范围内透射系数为 1 L=300; M=300; %取相同点数用于矩阵运算 [x,y]=meshgrid(li nspace(-L/2,L/2,M)); h=exp(j*k*z)*exp((j*k*(x.A2+y.A2))/(2*z))/(j*lamda*z);% 接收屏 H =fftshift(fft2(h)); B=fftshift(fft2(l)); G=H.*B; 乘 U= fftshift(ifft

文档评论(0)

1亿VIP精品文档

相关文档