光学课堂 首页 资讯 查看内容

菲涅尔波带片及用Matlab仿真

2021-12-20 11:10| 发布者:Davis| 查看:3157| 评论:0|原作者: 小小光08

摘要:本文介绍了菲涅尔波带片的原理和制作,以及其在圆孔衍射中的应用。同时,还给出了利用Matlab进行菲涅尔波带片仿真的方法,通过涂黑奇数或偶数波带来实现透光或不透光。


 

利用菲涅尔波带法讨论圆孔衍射时已知,由于相邻波带的相位相反,它们对观察点的作用相互抵消。当只露出一个波带时,光轴上点P0的光强是波前未阻挡时的4倍。


对于一个露出20个波带的衍射孔,其作用结果是相互抵消,点P0为暗点。

如果令其中的1、3、5、…19等10个奇数波带通光,而使2、4、6…20等10个偶数波带不通光,则点P0的合振幅为


因波前完全不被遮挡时点P0的合振幅为


挡住偶数带(或奇数带)后,点P0的光强约为波前完全不被遮挡时的400倍。

将奇数波带或偶数波带党组所制成的特殊光阑成为菲涅尔波带片。它类似于透镜,有聚光作用,也称为菲涅尔透镜。

 

下图给出了奇数和偶数波带被挡住(涂黑)的两种菲涅尔波带片。

 


波带片对轴上物点的成像公式为


此公式与薄透镜成像公式相似。

R相应于物距(物点与波带片之间的距离),r0相应于像距(观察点与波带片间的距离),而焦距为


折射透镜是利用光的折射原理聚光,从物点发出的光线到像点的光程相等,波带片利用光的衍射原理聚光,到达像点的相位差为2π的整数倍,产生相干叠加。

另外,波带片中有多个焦距,用平行光照射波带片时,出了点P0(主焦点)为亮点以外,还有一些光强较小的(次焦点)亮点。

相应第m个亮点(焦点)的焦距为


除了实焦点以外,波带片还有一系列的虚焦点,它们位于波带片的另一侧,其焦距仍由上式计算。

 


 

用Matlab仿真菲涅尔波带片:

 

(1)偶数波带片:将波带片所在屏幕分为1001*1001个点,依次求出各点处的半波带数,为奇数则涂黑,为偶数则不涂黑表示透光。设波带片中心为原点。

>> clear;

>> lamda=600e-6;                            %设置波长为600nm

>> R=3;                                  %设置菲涅尔波带片半径为3mm

>> f=1000;                              %设置焦距1m

>> ym=R; xm=R;

>>y=linspace(-ym,ym,1001); x=linspace(-xm,xm,1001); %设置程序中x,y向量,将屏幕分为1001*1001个点

>> for m=1:1001    for n=1:1001             %设置二重循环依次求菲涅尔波带片屏幕上各点

 p=sqrt(x(m).^2+y(n).^2);        %求各点所在圆半径

k=fix(p.^2./(lamda.*f));             %求各点半波点数

if p>R                            %如果屏幕上点大于波带片半径

I(m,n)=0;                    % 则用灰色表示背景,不是波带片部分

else

 if mod(k,2)==1                %判断半波带数奇偶,为奇数则涂黑

 I(m,n)=0;

else

 I(m,n)=1;                      %为偶数则不涂黑表示透光

end

end

end

end

>> colormap(gray(255))

>> N=255;                                 %设置灰度等级

>> Ir=I*N;

>> image(Ir);                                  %绘制波带片图像





(2)奇数波带片:将波带片所在屏幕分为1001*1001个点,依次求出各点处的半波带数,为偶数则涂黑,为奇数则不涂黑表示透光。设波带片中心为原点。

>> clear;

>> lamda=600e-6;                            %设置波长为600nm

>> R=3;                                  %设置菲涅尔波带片半径为3mm

>> f=1000;                              %设置焦距1m

>> ym=R; xm=R;

>>y=linspace(-ym,ym,1001); x=linspace(-xm,xm,1001); %设置程序中x,y向量,将屏幕分为1001*1001个点

>> for m=1:1001    for n=1:1001             %设置二重循环依次求菲涅尔波带片屏幕上各点

 

 p=sqrt(x(m).^2+y(n).^2);        %求各点所在圆半径

k=fix(p.^2./(lamda.*f));             %求各点半波点数

if p>R                            %如果屏幕上点大于波带片半径

I(m,n)=0.5;                    % 则用灰色表示背景,不是波带片部分

else

 if mod(k,2)==1                %判断半波带数奇偶,为奇数则不涂黑表示透光

 I(m,n)=1;

else

 I(m,n)=0;                      %为偶数则涂黑表示不透光

end

end

end

end

>> colormap(gray(255))

>> N=255;                                 %设置灰度等级

>> Ir=I*N;

>> image(Ir);                                  %绘制波带片图像



路过

雷人

握手

鲜花

鸡蛋

最新评论

联系客服 关注微信 访问手机版 返回顶部