【精选】MATLAB编程用两种方法模拟光学实验

上传人:姜** 文档编号:856228 上传时间:2017-05-19 格式:DOC 页数:6 大小:234.50KB
返回 下载 相关 举报
【精选】MATLAB编程用两种方法模拟光学实验_第1页
第1页 / 共6页
【精选】MATLAB编程用两种方法模拟光学实验_第2页
第2页 / 共6页
【精选】MATLAB编程用两种方法模拟光学实验_第3页
第3页 / 共6页
【精选】MATLAB编程用两种方法模拟光学实验_第4页
第4页 / 共6页
【精选】MATLAB编程用两种方法模拟光学实验_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《【精选】MATLAB编程用两种方法模拟光学实验》由会员分享,可在线阅读,更多相关《【精选】MATLAB编程用两种方法模拟光学实验(6页珍藏版)》请在金锄头文库上搜索。

1、MATLAB 编程用两种方法模拟光学实验摘要:利用 MATLAB 软件编程实现了用衍射积分的方法对单缝衍射、杨氏双缝干涉、黑白光栅衍射的计算机模拟;以及用傅立叶变换方法对简单孔径衍射、黑白光栅及正弦光栅夫琅和费衍射的模拟。关键词:MATLAB;衍射积分;傅立叶变换;计算机模拟引言:美国 Mathworks 公司推出的 MATLAB,是一种集数值计算、符号预算、可视化建模、仿真和图形处理等多种功能于一体的优秀图形化软件。本文介绍了通过 MATLAB 软件编程实现用衍射积分和傅立叶变换实现夫琅和费衍射计算机模拟的方法。计算机模拟为衍射实验的验证提供一条简捷、直观的途径。从而加深了对物理原理、概念和

2、图像的理解。正文:大学教学课程中引入计算机模拟技术正日益受到重视,与 Basic、C 和 Fortran 相比,用 MATLAB 软件做光学试验的模拟,只需要用数学方式表达和描述,省去了大量繁琐的编程过程。下面来介绍利用 MATLAB 进行光学模拟的两种方法。(一)衍射积分方法:该方法首先是由衍射积分算出接收屏上的光强分布,然后根据该分布调制色彩作图,从而得到衍射图案。1 单缝衍射。把单缝看作是 np 个分立的相干光源,屏幕上任意一点复振幅为 np 个光源照射结果的合成,对每个光源,光程差 =ypsin,sin =ys/D, 光强 I=I0(cos) 2+(sin)2,其中 =2/=ypys/

3、D编写程序如下,得到图 1clear lam=500e-9;a=1e-3;D=1;ym=3*lam*D/a;ny=51;ys=linspace(-ym,ym,ny);np=51;yp=linspace(0,a,np);for i=1:nysinphi=ys(i)/D;alpha=2*pi*yp*sinphi/lam;sumcos=sum(cos(alpha);sumsin=sum(sin(alpha);B(i,:)=(sumcos2+sumsin2)/np2;endN=255;Br=(B/max(B)*N;subplot(1,2,1)图 1 单缝衍射的光强分布image(ym,ys,Br);c

4、olormap(gray(N);subplot(1,2,2)plot(B,ys);2 杨氏双缝干涉两相干光源到接收屏上 P 点距离 r1=(D2+(y-a/2)2)1/2, r2=(D2+(y+a/2)2)1/2,相位差=2(r 2-r1)/,光强 I=4I0cos2(/2)编写程序如下,得到图 2clear lam=500e-9a=2e-3;D=1;ym=5*lam*D/a;xs=ym;n=101;ys=linspace(-ym,ym,n);for i=1:nr1=sqrt(ys(i)-a/2).2+D2);r2=sqrt(ys(i)+a/2).2+D2); phi=2*pi*(r2-r1)

5、./lam;B(i,:)=sum(4*cos(phi/2).2);endN=255;Br=(B/4.0)*Nsubplot(1,2,1)image(xs,ys,Br);colormap(gray(N);subplot(1,2,2)plot(B,ys)3 光栅衍射公式:I=I 0(sin/) 2(sin()/sin) 2 =(a/)sin=(d/)sin编写程序如下:得到图 3clear lam=500e-9;N=2;a=2e-4;D=5;d=5*a;ym=2*lam*D/a;xs=ym;n=1001;ys=linspace(-ym,ym,n);for i=1:nsinphi=ys(i)/D;a

6、lpha=pi*a*sinphi/lam;beta=pi*d*sinphi/lam;B(i,:)=(sin(alpha)./alpha).2.*(sin(N*beta)./sin(beta).2;B1=B/max(B);end图 2 杨氏双缝干涉的光强分布图 3 黑白光栅衍射光强分布NC=255;Br=(B/max(B)*NC;subplot(1,2,1)image(xs,ys,Br);colormap(gray(NC);subplot(1,2,2)plot(B1,ys);(二)傅立叶变换方法:在傅立叶变换光学中我们知道夫琅和费衍射场的强度分布就等于屏函数的功率谱。因此我们可以直接将光屏进行傅

7、立叶变换,再处理得到衍射图样。物体图像的生成可以直接由矩阵运算生成,也可利用 Windows 下的画图工具,生成一幅黑白图像,并调用命令函数 imread()输入图像,输入的图像是一个巨大的二维矩阵,利用 MATLAB 函数库中的 fft2()命令对该矩阵进行二位离散傅立叶变换,得到图像的频谱,该频谱是一个复数矩阵,然后用取模函数 abs()对该复数矩阵取模,得到振幅谱矩阵,利用函数 fftshift()对取模后的矩阵进行频谱位移,这是因为变换后的二维矩阵的直流分量位于图像的周边角,该函数交换矩阵的 1、3 象限和 2、4 象限,使直流分量移到频谱中心,从而使 FFT 频谱可视效果与实际图像相

8、吻合。最后利用imshow()函数将图像显示出来。编写程序如下:cleara=imread(E:1.bmp);grid onfigure(1)imshow(a,)afft=fft2(a);aabs=abs(afft);aabss=fftshift(aabs);figure(2)imshow(aabss,)colormap(gray);colorbarfigure(3)plot(aabss)colormap(gray);figure(4)meshc(aabss)maxx1=max(max(aabss);输入黑白或灰度的衍射屏图像,得到输出的衍射图样和光强分布。1 简单孔径的衍射(a)圆孔衍射:可

9、以看到光强分布随孔径大小的变化图 4 圆孔的光强分布(b)矩孔衍射:(c)三角孔衍射:2单缝衍射:3黑白光栅衍射:图 7 单缝衍射的光强分布图 5 矩孔衍射的光强分布图 6 三角孔衍射的光强分布 缝宽不变,光栅常数变大:缝宽变小,光栅常数不变:可以明显地观察到干涉条纹受衍射因子的调制,以及缺级现象4正弦光栅衍射:我们先设计程序制得一张正弦光栅,用正(余)弦函数作图如下:clear allxm=10*pi;ys=xm;xs=linspace(-xm,xm,500);B=cos(xs)+1;N=255;Br=B/2*Nimage(xs,ys,Br);colormap(gray(N);将该图片保存成

10、灰度 BMP 文件。调用程序得到衍射图样,只有三个衍射斑,与理论一致。(三)利用傅立叶方法还可以得到其他有趣的衍射花样,并研究其规律性图 8 黑白光栅衍射的光强分布图 9 正弦光栅衍射的光强分布 每个方孔几何尺寸相同可以看出,基本衍射图样还是方孔衍射但是在任意两个方孔连线的中垂线方向会出现等间距暗纹,三角形摆放则会出现类似蜂巢的结构。两个方向上的光栅衍射叠加,如果线条不平行则会在每个中垂线方向都向外发展。可以看到,圆孔衍射的图样受到椭圆孔衍射因子的调制一些字母和符号也可以产生很有趣的衍射图样:-参考文献:1:胡守信、李柏年, 基于 MATLAB 的数学实验 ,科学出版社2:张铮、杨文平、石博强、李海鹏, MATLAB 程序设计与实例应用 ,中国铁道出版社

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 实验/测试

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号