任意孔型菲涅尔衍射matlab仿真
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
菲涅尔衍射Matlab仿真
——《高等物理光学》实验报告
学院:物理学院
姓名:廖宝鑫
学号:20
目录
1.菲涅尔衍射衍射原理2
2.实验想法及步骤 (3)
实验思路 (3)
实验步骤 (3)
3.程序源代码: (3)
4.运行结果展示 (4)
5.结论 (6)
1. 菲涅尔衍射衍射原理
假设一个有限孔径,设孔径屏的直角坐标系为(x0,y0),并且观察平面与孔屏平行,两个平面间的间距为z ,观察平面的坐标系为(x,y ),这时,观察平面上的场可以表示为
()(
)()()0000000,,,,0exp{j2}
x y x y U x y z df df dx dy U x y f x x f y y π∞
-∞
∑
=⎡⎤⋅-+-⎣⎦⎰⎰(1)
根据近轴近似条件
()2221
12
x y f f λ≈-+ (2)
同时利用傅里叶变换关系先对,x y f f 进行积分,得到如下的菲涅尔公式
()()()()()22
0000000exp jkz ,,,exp{j }U x y z dx dy U x y x x y y j z z
πλλ∑⎡⎤=
⋅-+-⎣⎦⎰(3) 令()()()()22
exp jkz ,exp{j }h x y x y j z z πλλ⎡⎤=
+⎣
⎦
则式(3)可以写为
()()()()()0000000,,,,y ,,y U x y z U x y h x x y dx dy U x y h x ∑
=--=*⎰ (4)
对(4)做傅里叶变换可以得到
()()()0,,,,,x y x y x y A f f z A f f H f f z = (5)
式中:()(){}
00,,x y A f f FFT U x y =
对于单位振幅入射平面波()(){}
00,,x y A f f FFT t x y =
()(){},,x y H f f FFT h x y =
2.实验想法及步骤 实验思路
根据以上原理,传递函数()
,x y H f f 已知,只需要求得透射孔径的透过率函数()0,t x y ,然后对透过率函数进行傅里叶变换得,并与传递函数相乘得到()
,,x y A f f z ,最后做一个逆傅
里叶变换得到()()
,,=IFFT{,,}x y U x y z A f f z 。
实验步骤
1) 用ps 绘图软件做出1024*1024的像素点图,在上面绘制各种孔径图形,然后用imread()
读入图像得到二维矩阵,即孔径的透过率函数;
2) 对孔径二维矩阵做傅里叶变换,然后与传递函数相乘,最后对乘积做一次傅里叶逆变换
得到菲涅尔衍射图像。
3.程序源代码:
N=1024; %图像像素点为1024*1024
i=imread(''); %将读入图像用01二值矩阵表示 lev = graythresh(i); u = im2bw(i,lev);
subplot(2,2,1),imshow(u); %绘制孔径图像 title('孔径图像');
lam=600e-6; %入射波长(mm ) k=2*pi/lam; %波矢
z=5000000; %观察屏距离(mm ) [x,y]=meshgrid(linspace(-N/4,N/4,N));
U=fftshift(fft2(u)); %对透过率函数做傅里叶变换 h=exp(1j*k*z)*exp((1j*k*(x.^2+y.^2))/(2*z))/(1j*lam*z); %空间域传递函数 H=fftshift(fft2(h)); %空间频率域传递函数
A=fftshift(ifft2(H.*U)); %通过逆傅里叶变换得到衍射波的振幅
subplot(2,2,2),imshow(log(1+abs(A))); title('衍射图像');
I=abs(A).^2; %光强 subplot(2,2,3),mesh(x,y,I),title('光强分布');
subplot(2,2,4),plot(x(1,:),I(512,:)),title('光强二维分布');
4.运行结果展示
图1 圆孔的菲涅尔衍射
图2 方形孔的菲涅尔衍射
图3 星形孔的菲涅尔衍射
图4 字母B的菲涅尔衍射
图5 光栅菲涅尔衍射
5.结论
采用这一方法理论上可以模拟任意孔型的菲涅尔衍射图像,对于学习菲涅尔衍射有了更直观、形象的认识。