《任意孔型菲涅尔衍射matlab仿真》由会员分享,可在线阅读,更多相关《任意孔型菲涅尔衍射matlab仿真(7页珍藏版)》请在金锄头文库上搜索。
1、.菲涅尔衍射Matlab仿真高等物理光学实验报告学院: 物理学院 姓名: 廖宝鑫 学号:201628017307002 目录1.菲涅尔衍射衍射原理22.实验想法及步骤32.1实验思路32.2实验步骤33.程序源代码:34.运行结果展示45.结论61. 菲涅尔衍射衍射原理假设一个有限孔径,设孔径屏的直角坐标系为(x0,y0),并且观察平面与孔屏平行,两个平面间的间距为z,观察平面的坐标系为(x,y),这时,观察平面上的场可以表示为(1)根据近轴近似条件 (2) 同时利用傅里叶变换关系先对进行积分,得到如下的菲涅尔公式(3)令则式(3)可以写为 (4)对(4)做傅里叶变换可以得到 (5)式中:对于
2、单位振幅入射平面波2.实验想法及步骤2.1实验思路根据以上原理,传递函数已知,只需要求得透射孔径的透过率函数,然后对透过率函数进行傅里叶变换得,并与传递函数相乘得到,最后做一个逆傅里叶变换得到。2.2实验步骤1) 用ps绘图软件做出1024*1024的像素点图,在上面绘制各种孔径图形,然后用imread()读入图像得到二维矩阵,即孔径的透过率函数;2) 对孔径二维矩阵做傅里叶变换,然后与传递函数相乘,最后对乘积做一次傅里叶逆变换得到菲涅尔衍射图像。3.程序源代码:N=1024; %图像像素点为1024*1024i=imread(star.jpg); %将读入图像用01二值矩阵表示lev = g
3、raythresh(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.结论采用这一方法理论上可以模拟任意孔型的菲涅尔衍射图像,对于学习菲涅尔衍射有了更直观、形象的认识。.