MATLAB编程用两种方法模拟光学实验_第1页
MATLAB编程用两种方法模拟光学实验_第2页
MATLAB编程用两种方法模拟光学实验_第3页
MATLAB编程用两种方法模拟光学实验_第4页
MATLAB编程用两种方法模拟光学实验_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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/D编写程序如下,得到图1clear lam=50

3、0e-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:ny sinphi=ys(i)/D;图1 单缝衍射的光强分布 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)image(ym,ys,Br);colormap(gray(N);subpl

4、ot(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(r2-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:n r1=sqrt(ys(i)-a/2).2+D2); r2=sqrt(ys(i)+a/2).2+D2); phi=2*pi*(r2-r1)./lam; B(i,:)=sum(4*cos(

5、phi/2).2);end图2 杨氏双缝干涉的光强分布N=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=I0(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);图3 黑白光栅衍射光强分布for i=1:n sinphi=ys(i)/

6、D; alpha=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);endNC=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频谱可视效果与实际图像相吻合。最后利用imshow()函数将图像显示出来。编写程序如下:clea

8、ra=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)圆孔衍射:可以看到光强分布随孔径大小的变化 图4 圆孔的光强分布 (b)矩孔衍射:图

9、5 矩孔衍射的光强分布 (c)三角孔衍射:图6 三角孔衍射的光强分布2单缝衍射:图7 单缝衍射的光强分布3黑白光栅衍射: 缝宽不变,光栅常数变大: 缝宽变小,光栅常数不变: 图8 黑白光栅衍射的光强分布可以明显地观察到干涉条纹受衍射因子的调制,以及缺级现象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);将该图片保存成灰度BMP文件。调用程序得到衍射图样,只有三个衍射斑,与理论一致。图9 正弦光栅衍射的光强分布(三)利用傅立叶方法还可以得到其他有趣的衍射花样,并研究其规律性 每个方孔几何尺寸相同可以看出,基本衍射图样还是方孔衍射但是在任意两个方孔连线的中垂线方向会出现等间距暗纹,三角形摆放则会出现类似蜂巢的结构。 两个方向上的光栅衍射叠

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论