欢迎光临散文网 会员登陆 & 注册

简易MATLAB光学仿真:菲涅尔衍射数值模拟

2022-03-28 12:52 作者:光电面壁人  | 我要投稿

本文提纲:菲涅尔衍射的理论公式、MATLAB部分程序、仿真效果图

毕设在苟,要交什么愚蠢的“周进展报告”,唉我真是服了

一、菲涅尔衍射的理论公式

1、历史上最早的菲涅尔衍射理论公式

        历史上,波动光学奠基人、“物理光学之父”菲涅尔,提出了菲涅尔衍射理论。该理论被实验成功证明,自此光的波动说深入人心。

光的衍射示意图[1]

图1引用自 

[1]基于MATLAB的衍射场模拟计算_钱晓凡[J].

如该文献:

公式1由菲涅尔本人提出,被称为“菲涅尔衍射公式”,是半定量的,所以在菲涅尔当时的时代只好定量不够、条件来凑,比如施加高度对称性的圆孔、圆盘,经典的“泊松亮斑”就出自菲涅尔圆盘衍射。

2、真正定量的公式是基尔霍夫衍射公式,

图2 菲涅尔-基尔霍夫公式[1]

       基尔霍夫弥补了菲涅尔理论的不足,建立了严格的标量衍射理论。但通常我们数值模拟时不用这个公式,因为过于底层,它太麻烦——由于被积函数的形式复杂,即使对于很简单的问题也不易以解析形式求出结果。

3、菲涅尔-基尔霍夫公式的重要近似——菲涅尔衍射的计算公式

        “非近似不成光学”,这是光学人应当牢记于心的至理名言。伟人伽利略曾说过:”懂得忽略什么和懂得忽略什么同样重要。”

        菲涅尔-基尔霍夫公式施加傍轴近似后,再得到二次项展开忽略第三项后高次项近似这两重近似,即施加菲涅尔近似,满足菲涅尔衍射近似的区域称为菲涅尔衍射区:

图3 衍射的3个区域

得到菲涅尔衍射的计算公式:

图4 菲涅尔衍射计算公式[1]

       这个菲涅尔近似要求一是前提上在角度上傍轴,r能当z时;要求二是这个z值大到可以使二项展开的高次项忽略,如果z大到很大,可以进一步得到夫琅禾费近似。

       大多数情况下的数字全息,都是菲涅尔数字全息。夫琅禾费衍射可以视为菲涅尔衍射的特例。并且,在普通情况下菲涅尔衍射比夫琅禾费衍射容易实现,所以在历史上它也是首先被观察和研究的。

4、菲涅尔衍射计算公式的傅里叶变换算法:

图5 菲涅尔衍射计算公式的傅里叶变换算法

实际上公式4、5在MATLAB数值模拟里也不常用,常用的处理算法是按图5所示。

二、编程

1、部分程序及说明

令衍射物体为小圆孔,

Ob=小圆孔(a);% a为半径

%% 数值模拟

A1=Ob.*exp(1i*k/(2*Zd)*R.^2);%待傅里叶变换的项

A=fftshift(fft2(A1));

U_p=A.*(1/(1i*lamda.*Zd))*exp(1i*2.0*pi.*Zd/lamda).*exp(1i*pi*(x.^2+y.^2)/(lamda.*Zd));%观察屏上复振幅

I=U_p.*conj(U_p);

I=abs(U_p).^2;

2、效果图

中间有个泊松亮斑,不过成像效果不太好,先写到这里,等修改好了再更下一集

简易MATLAB光学仿真:菲涅尔衍射数值模拟的评论 (共 条)

分享到微博请遵守国家法律