MATLAB编程用两种方法模拟光学实验

MATLAB编程用两种方法模拟光学实验
MATLAB编程用两种方法模拟光学实验

MATLAB编程用两种方法模拟光学实验

摘要:

利用MATLAB软件编程实现了用衍射积分的方法对单缝衍射、杨氏双缝干涉、黑白

光栅衍射的计算机模拟;以及用傅立叶变换方法对简单孔径衍射、黑白光栅及正弦光栅夫

琅和费衍射的模拟。

关键词:

MATLAB;衍射积分;傅立叶变换;计算机模拟

引言:

美国Mathworks公司推出的MA TLAB,是一种集数值计算、符号预算、可视化建模、

仿真和图形处理等多种功能于一体的优秀图形化软件。本文介绍了通过MA TLAB软件编

程实现用衍射积分和傅立叶变换实现夫琅和费衍射计算机模拟的方法。

计算机模拟为衍射实验的验证提供一条简捷、直观的途径。从而加深了对物理原理、

概念和图像的理解。

正文:

大学教学课程中引入计算机模拟技术正日益受到重视,与Basic、C和Fortran相比,用MA TLAB软件做光学试验的模拟,只需要用数学方式表达和描述,省去了大量繁琐的编

程过程。下面来介绍利用MATLAB进行光学模拟的两种方法。

(一)衍射积分方法:

该方法首先是由衍射积分算出接收屏上的光强分布,然后根据该分布调制色彩作图,从而得到衍射图案。

1.单缝衍射。

把单缝看作是np个分立的相干光源,屏幕上任意一点复振幅为np个光源照射结果

的合成,对每个光源,光程差Δ=ypsinΦ,sinΦ=ys/D,光强I=I0(Σcosα)2+(Σsinα)2,其中α=2Δ/λ=πypys/λD

编写程序如下,得到图1

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:ny

sinphi=ys(i)/D;

alpha=2*pi*yp*sinphi/lam;

图1 单缝衍射的光强分布 sumcos=sum(cos(alpha));

sumsin=sum(sin(alpha));

B(i,:)=(sumcos^2+sumsin^2)/np^2;

end

N=255;

Br=(B/max(B))*N;

subplot(1,2,1)

image(ym,ys,Br); colormap(gray(N)); subplot(1,2,2) plot(B,ys); 2. 杨氏双缝干涉

两相干光源到接收屏上P 点距离r 1=(D 2+(y-a/2)2)1/2, r 2=(D 2+(y+a/2)2)1/2,相位差

Φ=2π(r 2-r 1)/λ,光强I=4I 0cos 2

(Φ/2) 编写程序如下,得到图2 clear lam=500e-9 a=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+D^2); r2=sqrt((ys(i)+a/2).^2+D^2); phi=2*pi*(r2-r1)./lam;

B(i,:)=sum(4*cos(phi/2).^2); end N=255;

Br=(B/4.0)*N

subplot(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 Φ

编写程序如下:得到图3

clear

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:n

sinphi=ys(i)/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);

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);

(二)傅立叶变换方法:

在傅立叶变换光学中我们知道夫琅和费衍射场的强度分布就等于屏函数的功率谱。因此我们可以直接将光屏进行傅立叶变换,再处理得到衍射图样。

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

编写程序如下: clear a=imread('E:\1.bmp'); grid on figure(1) imshow(a,[]) afft=fft2(a); aabs=abs(afft); aabss=fftshift(aabs); figure(2) imshow(aabss,[]) colormap(gray); colorbar figure(3) plot(aabss) colormap(gray); figure(4) meshc(aabss) maxx1=max(max(aabss)); 输入黑白或灰度的衍射屏图像,得到输出的衍射图样和光强分布。 1. 简单孔径的衍射

(a)圆孔衍射:可以看到光强分布随孔径大小的变化

图4 圆孔的光强分布

(b)矩孔衍射:

(c )三角孔衍射:

2.单缝衍射:

3.黑白光栅衍射:

图7 单缝衍射的光强分布

图5 矩孔衍射的光强分布

图6 三角孔衍射的光强分布

缝宽不变,光栅常数变大:

缝宽变小,光栅常数不变:

可以明显地观察到干涉条纹受衍射因子的调制,以及缺级现象 4.正弦光栅衍射:

我们先设计程序制得一张正弦光栅,用正(余)弦函数作图如下: clear all

xm=10*pi;ys=xm;

xs=linspace(-xm,xm,500); B=cos(xs)+1; N=255; Br=B/2*N

image(xs,ys,Br); colormap(gray(N));

将该图片保存成灰度BMP 文件。调用程序得到衍射图样,只有三个衍射斑,与理论一致。

(三)利用傅立叶方法还可以得到其他有趣的衍射花样,并研究其规律性

图8 黑白光栅衍射的光强分布 图9 正弦光栅衍射的光强分布

每个方孔几何尺寸相同

可以看出,基本衍射图样还是

方孔衍射但是在任意两个方

孔连线的中垂线方向会出现

等间距暗纹,三角形摆放则会

出现类似蜂巢的结构。

两个方向上的光栅衍射叠加,

如果线条不平行则会在每个

中垂线方向都向外发展。

可以看到,

圆孔衍射的图样受到

椭圆孔衍射因子的调制

一些字母和符号也可以

产生很有趣的衍射图样:

----------------------------------------------------------------------------- 参考文献:

[1]:胡守信、李柏年,《基于MATLAB的数学实验》,科学出版社

[2]:张铮、杨文平、石博强、李海鹏,《MATLAB程序设计与实例应用》,中国铁道出版社

基于Matlab的光学衍射仿真

基于Matlab的光学衍射实验仿真 摘要 光学试验中衍射实验是非常重要的实验. 光的衍射是指光在传播过程中遇到障碍物时能够绕过障碍物的边缘前进的现象, 光的衍射现象为光的波动说提供了有力的证据. 衍射系统一般有光源、衍射屏和接受屏组成, 按照它们相互距离的大小可将衍射分为两大类, 一类是衍射屏与光源和接受屏的距离都是无穷远时的衍射, 称为夫琅禾费衍射, 一类是衍射屏与光源或接受屏的距离为有限远时的衍射称为菲涅尔衍射。 本文用Matlab软件对典型的衍射现象建立了数学模型,对衍射光强分布进行了编程运算,对衍射实验进行了仿真。最后创建了交互式GUI界面,用户可以通过改变输入参数模拟不同条件下的衍射条纹。 本文对于衍射概念、区别、原理及光强分布编程做了详细全面的介绍 关键字:Matlab;衍射;仿真;GUI界面;光学实验

Matlab-based Simulation of Optical Diffraction Experiment Abstract Optical diffraction experiment is a very important experiment. is the diffraction of light propagation of light in the obstacles encountered in the process to bypass the obstacles when the forward edge of the phenomenon of light diffraction phenomenon of the wave theory of light provides a strong Evidence. diffraction systems generally have light, diffraction screen and accept the screen composition, size according to their distance from each other diffraction can be divided into two categories, one is the diffraction screen and the light source and the receiving screen is infinity when the distance between the diffraction Known as Fraunhofer diffraction, one is diffraction screen and the light source or accept a limited away from the screen when the diffraction is called Fresnel diffraction. In this paper, Matlab software on a typical phenomenon of a mathematical model of diffraction, the diffraction intensity distribution of the programming operation, the diffraction experiment is simulated. Finally, create an interactive GUI interface, users can change the input parameters to simulate different conditions of the diffraction pattern. This concept of the diffraction, difference, intensity distribution of programming principles and a detailed comprehensive description Key word: matlab;diffraction; simulation; gui interface; optical experiment

实验二 Matlab程序设计基本方法1

实验二Matlab程序设计基本方法 覃照乘自092 电气工程学院 一、实验目的: 1、熟悉MATLAB 程序编辑与设计环境 2、掌握各种编程语句语法规则及程序设计方法 3、函数文件的编写和设计 4、了解和熟悉跨空间变量传递和赋值 二、实验基本知识: ◆for循环结构 语法:for i=初值:增量:终值 语句1 …… 语句n end 说明:1.i=初值:终值,则增量为1。 2.初值、增量、终值可正可负,可以是整数,也可以是小数,只须符合数学逻辑。 ◆while 循环结构 语法:while 逻辑表达式 循环体语句 end 说明:1、whiIe结构依据逻辑表达式的值判断是否执行循环体语勾。若表达式的值为真,执行循环体语句一次、在反复执行时,每次都要进行判断。若表达 式的值为假,则程序执行end之后的语句。 2、为了避免因逻辑上的失误,而陷入死循环,建议在循环体语句的适当位 置加break语句、以便程序能正常执行。(执行循环体的次数不确定; 每一次执行循环体后,一定会改变while后面所跟关系式的值。) 3、while循环也可以嵌套、其结构如下:

while逻辑表达式1 循环体语句1 while逻辑表达式2 循环体语句2 end 循环体语句3 end ◆if-else-end分支结构 if 表达式1 语句1 else if 表达式2(可选) 语句2 else(可选) 语句3 end end 说明:1.if结构是一个条件分支语句,若满足表达式的条件,则往下执行;若不满足,则跳出if结构。 2.else if表达式2与else为可选项,这两条语句可依据具体情况取舍。 3.注意:每一个if都对应一个end,即有几个if,记就应有几个end。 ◆switch-case结构 语法:switch表达式 case常量表达式1 语句组1 case常量表达式2 语句组2 …… otherwise 语句组n end

基于matlab干涉系统仿真_

《工程光学》综合性练习一题目:基于matlab的干涉系统仿真 学院精密仪器与光电子工程学院 专业测控技术与仪器

综合练习大作业一 一、要求 3-4人组成小组,对下面给出的各题目利用Matlab等工具进行仿真。 二、仿真题目 1、对于杨氏双缝干涉,改变双缝的缝宽和缝间距,观察干涉图样变化 ①原理图 图中参数 光线波长:lam=500纳米; 双缝距离:d=0.1毫米;(可调) 双缝距接收屏距离:D=1米; 接收屏范围:xs:-0.005~0.005 ys:-0.005~0.005 光源振幅:AI=A2=1; (单位振幅,可调) ②matlab代码: clear; lam=500e-9; %设定波长lam(500纳米) d=0.5e-3; %设定两缝之间距离d(0.5毫米) D=1; %双缝到接收屏距离D(1米) A1=1; %初始两光源均为单位振幅 A2=1; xm=0.005; ym=xm; %接受屏的范围ym,xm(0.01*0.01矩形) n=1001; xs=linspace(-xm,xm,n); %用线性采样法生成两个一位数组xs,ys %(n为总点数) ys=linspace(-ym,ym,n); L1=sqrt((xs-d/2).^2+ys.^2+D^2);%光屏上点(xs,ys)距光源1距离r1 L2=sqrt((xs+d/2).^2+ys.^2+D^2);%光屏上点(xs,ys)距光源2距离r2 E1=A1./sqrt(L1).*exp(1i*L1*2*pi/lam);%光源1在接受屏上复振幅E1 E2=A2./sqrt(L2).*exp(1i*L2*2*pi/lam);%光源2在接受屏上复振幅E2 E=E1+E2; %复振幅叠加为合成振幅E

基于MATLAB的物理光学实验仿真平台构建

毕业设计(论文)开题报告题目:基于Matlab的物理光学实验仿真平台构建 院(系)光电工程学院 专业光信息科学与技术 班级120110 姓名闫武娟 学号120110127 导师刘王云 年月日

开题报告填写要求 1.开题报告作为毕业设计(论文)答辩委员会对学生答辩资格审查的依据材料之一。 此报告应在指导教师指导下,由学生在毕业设计(论文)工作前期内完成。2.开题报告内容必须按教务处统一设计的电子文档标准格式(可从教务处网页上下载)填写并打印(禁止打印在其它纸上后剪贴),完成后应及时交给指导教师审阅。3.开题报告字数应在1500字以上,参考文献应不少于15篇(不包括辞典、手册,其中外文文献至少3篇),文中引用参考文献处应标出文献序号,“参考文献”应按附件中《参考文献“注释格式”》的要求书写。 4.年、月、日的日期一律用阿拉伯数字书写,例:“2005年11月26日”。

这些仿真平台的使用不仅方便了教学,而且也使学生更容易理解物理光实验的基本原理,加深对理论知识的理解与记忆。 2.课题研究的主要内容和拟采用的研究方案、研究方法 2.1课题研究的主要内容 (1). 在光的干涉基本理论基础上,实现两束平面波、球面波的干涉实验,杨氏双缝和杨氏双孔干涉实验,平行平板的等倾干涉实验,楔形平板的等厚干涉实验,牛顿环干涉实验,迈克尔逊干涉实验以及平行平板的多光束干涉实验。 (2). 在菲涅尔衍射及夫琅和费衍射基本理论基础上,实现矩孔、单缝、圆孔、双缝、多缝、平面光栅及闪耀光栅的衍射实验。 2.2 研究方法及方案 物理光学实验可分为两大类:干涉与衍射。光的干涉有光源、干涉装置和干涉图形三个基本要素;衍射分为菲涅尔衍射和夫琅禾费衍射。光学领域的大部分图像及曲线分布都可以用MATLAB 软件加以计算和实现[16], 以杨氏双缝干涉为例,简述实验方案 杨氏双缝干涉模型是典型的分波面干涉,其干涉装置图如图所示,用一个单缝与一个双缝,从同一波面上分出两个同相位的单色光,进而获得相干光源并观察分析干涉图样。 图1.1杨氏双缝干涉实验装置图 2.2.1数学建模 根据干涉的基本原理,点光源S 发出的光波经双缝分解为次波源S 1、S 2,这两个次波源发出的光波在空间相干叠加,继而在其后的接收屏形成一系列明暗相间的干涉条纹。 设入射光波波长为λ,两个次波源的强度相同,且间距为d (1)位相差的计算: 221)2 (y d x r ++ =222)2 - (y d x r +=(2.1) )(*12r r n -=?(2.2)

工程光学matlab仿真设计

工程光学仿真实验报告 1、氏双缝干涉实验 (1)氏干涉模型 氏双缝干涉实验装置如图1所示: S 发出的光 波射到光屏上的两个小孔S1 和S2 , S1 和S2 相 距很近,且到S 等距;从S1 和S2 分别发散出的光 波是由同一光波分出来的,所以是相干光波,它们在距离光屏为D 的屏幕上叠加,形成一定的干涉图 样。 图1.1 氏双缝干涉 假设S 是单色点光源,考察屏幕上某一点P ,从S1 和S2 发出的光波在该点叠加 产生的光强度为: I = I1 + I2 + 2 I1 I2 cos δ (1-1) 式中, I1 和I2 分别是两光波在屏幕上的光强度, 若实验装置中S1 和S2 两个缝 大小相等, 则有 I1 = I2 =I0 (1-2) δ= 2π(r2 - r1)/λ(1-3) (1-3) 2221)2/(D y d x r +++= (1-4) 2222)2/(D y d x r ++-= (1-5) 可得 xd r r 22 122=- (1-6) 因此光程差:12r r -=? (1-7) 则可以得到条纹的强度变化规律- 强度分布公式: ]/)([cos 1220λπd r r I I -= (1-8) (2)仿真程序 clear; Lambda=650; %设定波长,以Lambda 表示波长 Lambda=Lambda*1e-9; d=input('输入两个缝的间距 )'); %设定两缝之间的距离,以d 表示两缝之间距离 d=d*0.001; Z=0.5; %设定从缝到屏幕之间的距离,用Z 表示

yMax=5*Lambda*Z/d;xs=yMax; %设定y方向和x方向的围 Ny=101;ys=linspace(-yMax,yMax,Ny);%产生一个一维数组ys,Ny是此次采样总点数 %采样的围从- ymax到ymax,采样的数组命名为ys %此数组装的是屏幕上的采样点的纵坐标 for i=1:Ny %对屏幕上的全部点进行循环计算,则要进行Ny次计算L1=sqrt((ys(i)-d/2).^2+Z^2); L2=sqrt((ys(i)+d/2).^2+Z^2); %屏上没一点到双缝的距离L1和L2 Phi=2*pi*(L2-L1)/Lambda; %计算相位差 B(i,:)=4*cos(Phi/2).^2; %建立一个二维数组,用来装该点的光强的值 end%结束循环 NCLevels=255; %确定使用的灰度等级为255级 Br=(B/4.0)*NCLevels; %定标:使最大光强(4. 0)对应于最大灰度级(白色) subplot(1,4,1),image(xs,ys,Br); %用subplot创建和控制多坐标轴 colormap(gray(NCLevels)); %用灰度级颜色图设置色图和明暗 subplot(1,4,2),plot(B(:),ys); %把当前窗口对象分成2块矩形区域 %在第2块区域创建新的坐标轴 %把这个坐标轴设定为当前坐标轴 %然后绘制以( b (: ) , ys)为坐标相连的线title('氏双缝干涉'); (3)仿真图样及分析 a)双缝间距2mm b)双缝间距4mm

实验3MATLAB程序设计

1,编写M 函数实现求一个数是否为素数,再编写一主程序(脚本文件),要求通过键盘输入一个整数,然后调用判断素数函数,从而确定它是否素数。 x=input('请输入一个整数x:'); if myprime(x) disp('您输入的整数x是一个素数。') else disp('您输入的数x不是一个素数。') end function y=myprime(x) y=1; for i=2:fix(sqrt(x)) if mod(x,i)==0 y=0; end end 2,编写M 函数统计一数值中零的个数,然后编写脚本文件,实现统计从1—2007 中零的总个数。 function num=number0(a) %统计十进制数值中0的个数 sa=num2str(a);%将数值装化为字符串 num=length(find(sa=='0'));% ));%求取字符串中'0’的个数 y=0;

for a=1:2006 num=number0(a); y=num+y; end disp(y) 504 3,编写程序计算x∈[-3,3],字长0.01:并画出曲线x = -3:0.01:3; y=zeros(size(x)); for i = 1:length(x) if -3<= x(i)& x(i)<=-1 y(i)=(-x(i).^2-4*x(i)-3)/ 2; elseif -1<= x(i) & x(i)<=1 y(i)=-x(i).^2+1; elseif 1<=x(:,i)<=3 y(i)=(-x(i).^2+4*x(i)-3)/2; end end plot(x,y) -3-2-10123

matlab光学仿真

MATLAB光学仿真实验报告

目录 一、实验目的 (3) 二、实验内容 (3) 三、实验原理 (3) 四.实验结果(各种干涉图样,) (4) 1.平面波与球面波之间的相互干涉 (4) (1)平面波与平面波方向相对的干涉 (4) (2)球面波与球面波 (5) (3)球面波与平面波 (6) 2.双缝干涉 (7) (1)经典杨氏双缝干涉 (7) (2)接收屏在侧面,且二者连线与干涉面垂直 (7) 3.多孔干涉 (8) (1)三孔干涉 (8) (2)四个孔干涉 (9) 4.多个不同方向的平面波 (10) 5.牛顿环与电磁波传播 (10) (1)牛顿环 (10) (2)模拟电磁波动画 (11) 五,实验总结与感想 (11)

一、实验目的 通过对光学现象的仿真,加深对各种光学现象本质的理解,同时,学会利用MATLAB,这种有效工具研究物理光学。 二、实验内容 这次由于时间关系,只研究了光的干涉现象,不过干涉内容很多,按照老师给的实验的提示内容,我每个都做了。并且自己还加了一些内容。按先后顺序非别如下: 1.平面波与球面波之间的相互干涉 (1)平面波与平面波方向相对的干涉,并且调整角度,方向相对干涉。 (2)球面波与球面波,这个研究的比较多,我分别研究了两个光源,三个,四个以及六个光源在与之共面的平面上的干涉,得到许多精美的图案。 (3)球面波与平面波 2.经典的杨氏双缝干涉 由于杨氏干涉比较重要,所以研究的时间相对较长,这个我为了更好的调整参数,采用了先输入数据的方法,之后才运行得到结果,我还增加了研究非单色光的研究。 另外,我还研究了与两个点光源连线相垂直的屏上的干涉,虽然这个不属于杨氏干涉,但是原理其实差不多。 3.多孔干涉 这部分其实原理差不多,只需要设置对参数。这部分分别研究了三孔和四孔的干涉,并且干涉屏的位置也不一样,分为与孔面平行和与孔面平行,总共四中情况,从中自己也找到了规律。 4.多个不同方向的平面波 这部分研究了三个不同方向的片面波与四个方向的平面波,从中得到一些图案,找到了规律。 5.模拟电磁波传播动画(代码借鉴一本参考书的)与牛顿环 为了加深对电磁波传播的理解,做了个模拟电磁波传播的动画,另外,还做了个牛顿环干涉。 三、实验原理 MATLAB是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括

刘卫国版MATLAB程序设计与应用课后实验六八九

实验六 高层绘图操作 %第一题: 程序代码如下: x=linspace(0,2*pi,101); y=(0.5+3*sin(x)./(1+x.^2)).*cos(x); plot(x,y) 01234567 -1 -0.5 0.5 1 1.5 %第二题: %(1) 程序代码如下: x=linspace(-2*pi,2*pi,100); y1=x.^2; y2=cos(2*x); y3=y1.*y2; plot(x,y1,'b-',x,y2,'r:',x,y3,'y--'); text(4,16,'\leftarrow y1=x^2'); text(6*pi/4,-1,'\downarrow y2=cos(2*x)'); text(-1.5*pi,-2.25*pi*pi,'\uparrow y3=y1*y2');

-8 -6 -4 -2 2 4 6 8 -30-20 -10 10 20 30 40 %(2) 程序代码如下: x=linspace(-2*pi,2*pi,100); y1=x.^2; y2=cos(2*x); y3=y1.*y2; subplot(1,3,1);%分区 plot(x,y1); title('y1=x^2');%设置标题 subplot(1,3,2); plot(x,y2); title('y2=cos(2*x)'); subplot(1,3,3); plot(x,y3); title('y3=x^2*cos(2*x)');

-10 10 0510 15202530 35 40y1=x 2 -10 10 -1-0.8 -0.6 -0.4-0.200.20.4 0.6 0.8 1y2=cos(2*x) -10 10 -30-20 -10 10 20 30 40 y3=x 2*cos(2*x) %(3) 程序代码如下: x=linspace(-2*pi,2*pi,20); y1=x.^2; subplot(2,2,1);%分区 bar(x,y1); title('y1=x^2的条形图');%设置标题 subplot(2,2,2); stairs(x,y1); title('y1=x^2的阶梯图'); subplot(2,2,3); stem(x,y1); title('y1=x^2的杆图'); subplot(2,2,4); fill(x,y1,'r');%如果少了'r'则会出错 title('y1=x^2的填充图'); %其他的函数照样做。

圆孔矩孔的菲涅尔衍射模拟(matlab实现)-工程光学(20200607000913)

工程光学综合练习-----圆孔、矩孔的菲涅尔衍射模拟

圆孔和矩孔的菲涅尔衍射模拟 一、原理 由惠更斯-菲涅尔原理可知接收屏上的P点的复振幅可以表示为 其中为衍射屏上的复振幅分布, 为倾斜因子。根据基尔霍夫对此公式的 完善,有 设衍射屏上点的坐标为(x1, y1),接收屏上点的坐标为(x, y),衍射屏与接收屏间距离为z1,当满足菲涅尔近似条件时,即 此时可得到菲涅尔衍射的计算公式 把上式指数项中的二次项展开,并改写成傅里叶变换的形式,可以写成上式为菲涅尔衍射的傅里叶变换表达式,它表明除了积分号前面的一个与 x1、y1无关的振幅和相位因子外,菲涅尔衍射的复振幅分布是孔径平面的复振 幅分布和一个二次相位因子乘积的傅里叶变换。 相对于夫琅和费衍射而言,菲涅尔衍射的观察屏距衍射屏不太远。在菲涅尔衍射中,输入变量和输出变量分别为衍射孔径平面的光场分布和观察平面的光场 以及光强分布,考虑到这三个量都是二维分布,而且Matlab主要应用于矩阵数值运算,所以本程序选择用二维矩阵来存储衍射孔径平面和观察平面的场分布,并分别以矩阵的列数和行数来对应平面的直角坐标值(x, y)以及(x1, y1)。 二、圆孔菲涅尔衍射 用MATLAB分别构造表示衍射屏和接收屏的二维矩阵。注意使两矩阵阶次相同,考虑到运算量的要求,采样点数不能过多,所以每个屏的x和y方向各取200到300点进行运算。根据式(4),选取合适的衍射屏和接收屏尺寸和相距的

距离,模拟结果如下: 取典型的He-Ne激光器波长=632.8nm,固定衍射屏和接收屏尺寸和相距的 距离,分别取不同的圆孔半径,得到以下三组衍射图样,其圆孔半径分别为12mm,20mm,50mm 图 1(r=12mm) 图 2(r=20mm)

工程光学matlab仿真

工程光学仿真实验报告1、杨氏双缝干涉实验 (1)杨氏干涉模型 屏 图 , 0(1-8) 2 1 (2)仿真程序 clear; Lambda=650; %设定波长,以Lambda表示波长 Lambda=Lambda*1e-9; d=input('输入两个缝的间距 )'); %设定两缝之间的距离,以d表示两缝之间距离 d=d*0.001; Z=0.5; %设定从缝到屏幕之间的距离,用Z表示 yMax=5*Lambda*Z/d;xs=yMax; %设定y方向和x方向的范围

Ny=101;ys=linspace(-yMax,yMax,Ny);%产生一个一维数组ys,Ny 是此次采样总点数 %采样的范围从- ymax 到ymax,采样的数组命名为ys %此数组装的是屏幕上的采样点的纵坐标 for i=1:Ny %对屏幕上的全部点进行循环计算,则要进行Ny 次计算 L1=sqrt((ys(i)-d/2).^2+Z^2); L2=sqrt((ys(i)+d/2).^2+Z^2); %屏上没一点到双缝的距离L1和L2 Phi=2*pi*(L2-L1)/Lambda; %计算相位差 B(i,:)=4*cos(Phi/2).^2; %建立一个二维数组,用来装该点的光强的值 end %结束循环 NCLevels=255; %确定使用的灰度等级为255级 Br=(B/4.0)*NCLevels; %定标:使最大光强(4. 0)对应于最大灰度级(白色) subplot(1,4,1),image(xs,ys,Br); %用subplot 创建和控制多坐标轴 colormap(gray(NCLevels)); %用灰度级颜色图设置色图和明暗 subplot(1,4,2),plot(B(:),ys); %把当前窗口对象分成2块矩形区域 %在第2块区域创建新的坐标轴 %把这个坐标轴设定为当前坐标轴 %然后绘制以( b (: ) , ys)为坐标相连的线 title('杨氏双缝干涉'); (3)仿真图样及分析 a)双缝间距2mm b)双缝间距4mm c)双缝间距6mm d)双缝间距8mm 图1.2改变双缝间距的条纹变化 由上面四幅图可以看出,随着双缝之间的距离增大,条纹边缘坐标减小,也就是条纹 间距减小,和理论公式d D e /λ=推导一致。如果增大双缝的缝宽,会使光强I 增加,能够 看到条纹变亮。 二、杨氏双孔干涉实验 1、杨氏双孔干涉 杨氏双孔干涉实验是两个点光源干涉实 验的典型代表。如图2所示。当光穿过这两个 离得很近小孔后在空间叠加后发生干涉, 并 在像屏上呈现出清晰的明暗相间的条纹。 由 于双孔发出的波是两组同频率同相位的球面 波, 故在双孔屏的光射空间会发生干涉。 于是, 在图2中两屏之间的空间里, 如果一点P 处于 两相干的球面波同时到达 波 峰 (或波谷)的位置, 叠加后振幅达到最高, 图2.1 杨氏双孔干涉 表现为干涉波的亮点; 反之, 当P 处处于一个球面波的波峰以及另一个球面波的波谷时候, 叠加后振幅为零,变现是暗纹。

MATLAB程序设计实验报告

MATLAB 程序设计实验报告 一、实验目的 1. 通过实验熟悉MATLAB 仿真软件的使用方法; 2. 掌握用MATLAB 对连续信号时域分析、频域分析和s 域分析的方法,利用绘图命令绘制出典型信号的波形,了解这些信号的基本特征; 3. 掌握用MATLAB 对离散信号时域分析、频域分析和z 域分析的方法,利用绘图命令绘制出典型信号的波形,了解这些信号的基本特征; 4. 通过绘制信号运算结果的波形,了解这些信号运算对信号所起的作用。 二、实验设备 1. 计算机 : 2. MATLAB R2007a 仿真软件 三、实验原理 对系统的时域分析 信号的时域运算包括信号的相加、相乘,信号的时域变换包括信号的平移、反折、倒相及信号的尺度变换。 (1)信号的相加和相乘:已知信号)(1t f 和)(2t f ,信号相加和相乘记为 )()(1t f t f =)(2t f +;)()(1 t f t f =)(2t f *。 (2)信号的微分和积分:对于连续时间信号,其微分运算是用diff 函数来完成的,其语句格式为:diff(function,’variable’,n),其中function 表示需要进行求导运算的信号,或者被赋值的符号表达式;variable 为求导运算的独立变量;n 为求导的阶数,默认值为求一阶导数。连续信号的积分运算用int 函数来完成,语句格式为:diff(function,’variable’,a,b),其中function 表示需要进行被积信号,或者被赋值的符号表达式;variable 为求导运算的独立变量;a,b 为积分上、下限,a 和b 省略时为求不定积分。 (3)信号的平移、翻转和尺度变换 信号的平移包含信号的左移与右移,信号的翻转包含信号的倒相与折叠,平移和翻转信号不会改变信号)(t f 的面积和能量。信号的尺度变换是对信号)(t f 在时间轴上的变化,可使信号压缩或扩展。)(at f 将原波形压缩a 倍,)/(a t f 将原波形扩大a 倍。 ¥ 对系统频率特性的分析

Matlab程序设计实验报告

实验七Matlab 程序设计 实验目的: 1、掌握建立和执行M 文件的方法; 2、掌握实现选择结构的方法; 3、掌握实现循环结构的方法。 实验内容: 1. 编写用 5 次多项式拟合函数y=sin(x), x [0, 2 ]的脚本M 文件,要求绘图观察拟合的效果。 function shiyan1 x=0:0.5:2*pi y=sin(x) p=polyfit(x,y,5) x1=0:0.2:2*pi y1=polyval(p,x1) plot(x,y, 'b' ,x1,y1, '*r' x =

Columns 1 through 9 0 0.5000 1.0000 1.5000 2.0000 2.5000 3.0000 3.5000 4.0000 Columns 10 through 13 4.5000 5.0000 5.5000 6.0000 y = Columns 1 through 9 0 0.4794 0.8415 0.9975 0.9093 0.5985 0.1411 -0.3508 -0.7568 Columns 10 through 13 -0.9775 -0.9589 -0.7055 -0.2794 p = -0.0056 0.0881 -0.3967 0.2671 0.8902 0.0029 x1 = Columns 1 through 10 0 0.2000 0.4000 0.6000 0.8000 1.0000 1.2000 1.4000 1.6000 1.8000 Columns 11 through 20

2. 2.2000 2.4000 2.6000 2.8000 3.0000 3.2000 3.4000 3.6000 1.8001 Columns 21 through 30 4.0 4.2000 4.4000 4.6000 4.8000 5.0000 5.2000 5.4000 5.6000 5.8000 Columns 31 through 32 6.0 6.2000 y1 = Columns 1 through 10 0.29 0.1886 0.3786 0.5585 0.7172 0.8461 0.9391 0.9926 1.0048 0.9761 Columns 11 through 20 0.9083 0.8048 0.6701 0.5098 0.3301 0.1381 -0.0590 -0.2538 -0.4389 -0.6073 Columns 21 through 30 -0.7524 -0.8685 -0.9505 -0.9949 -0.9991 -0.9626 -0.8863 -0.7732 -0.6288 -0.4606 Columns 31 through 32

用matlab实现杨氏双缝干涉的实验仿真

用MATLAB实现杨氏双缝干涉实验仿真摘要: 实验室中,做普通光学实验,受到仪器和场所的限制;实验参数的改变引起干涉图样的改变不明显,难以体现实验的特征。本文利用MA TLAB仿真杨氏双缝干涉实验,创建用户界面,实现人机交互,输入不同实验参数,使干涉现象直观表现出来。 关键词: MATLAB;杨氏双缝干涉实验;用户界面设计;程序编写;仿真。 1. 引言: 在计算机迅猛发展的今天,光学实验的仿真越来越多的受科研工作者和教育工作者关注。其应用主要有两个方面:一是科学计算方面,利用仿真实验的结果指导实际实验,减少和避免贵重仪器的损害;二是在光学教学方面,将抽象难懂的光学概念和规律,由仿真实验过程直观的描述,使学生对学习感兴趣。在科学计算方面,国外的光学实验仿真是模拟设计和优化光学系统的过程中发展起来的,在这方面美国走在最前,其中最具代表性的是劳伦斯利和弗莫尔实验光传输模拟计算机软件Prop92及大型总体优化设计软件CHAINOP和PROPSUITE;另外法国也开发完成其具有自身特点的光传输软件Miro。在光学教学方面,国外已有相关的配有光盘演示光学实验的教材。我国用于科学研究的光学实验计算机数值仿真软件随开发较晚,但也已经取得了显著成绩。特别是1999年,神光——III原型装置TLL分系统集成实验的启动为高功率固体激光驱动器的计算机数值模拟的研究创造了条件。目前已基本完成SG99光传输模拟计算软件的开发,推出的标准版本基本能稳定运行。目前该软件已经应用于神光——III主机可行性论证的工作中。计算机仿真具有观测方便,过程可控等优点,可以减少系统对外界条件对实验本身的限制,方便设置不同的参数,借助计算机的高数运算能力,可以反复改变输入的实验条件系统参数,大大提高实验效率。MATLAB是MatlabWorks公司于1982年推出的一套高性能的数值计算和可视化软件。具有可扩展性,易学易用性,高效性等优势。 通过对目前计算机仿真光学实验的现状和相关研究的分析,本文将用Matlab 编程实现杨氏双缝干涉实验的仿真。利用Matlab GUI建立用户界面,实现人机

MATLAB程序设计及经典例题解析3

MATLAB程序设计 用MATLAB语言编写的程序,称为M文件。M文件可以根据调用方式的不同分为两类:命令文件(Script File)和函数文件(Function File)。 例3-1 分别建立命令文件和函数文件,将华氏温度f转换为摄氏温度c。 程序1:首先建立命令文件并以文件名f2c.m存盘。 clear; %清除工作空间中的变量 f=input('Input Fahrenheit temperature:'); c=5*(f-32)/9 然后在MATLAB的命令窗口中输入f2c,将会执行该命令文件,执行情况为: Input Fahrenheit temperature:73 c =22.7778 程序2:首先建立函数文件f2c.m。 function c=f2c(f) c=5*(f-32)/9 然后在MATLAB的命令窗口调用该函数文件。 clear; y=input('Input Fahrenheit temperature:'); x=f2c(y) 输出情况为: Input Fahrenheit temperature:70 c =21.1111 x =21.1111 3.1.2 M文件的建立与打开 M文件是一个文本文件,它可以用任何编辑程序来建立和编辑,而一般常用且最为方便的是使用MATLAB提供的文本编辑器。

1.建立新的M文件 为建立新的M文件,启动MATLAB文本编辑器有3种方法: (1) 菜单操作。从MATLAB主窗口的File菜单中选择New菜单项,再选择M-file命令,屏幕上将出现MATLAB 文本编辑器窗口。 (2) 命令操作。在MATLAB命令窗口输入命令edit,启动MATLAB文本编辑器后,输入M文件的内容并存盘。 (3) 命令按钮操作。单击MATLAB主窗口工具栏上的New M-File命令按钮,启动MATLAB文本编辑器后,输入M文件的内容并存盘。 2.打开已有的M文件 打开已有的M文件,也有3种方法: (1) 菜单操作。从MATLAB主窗口的File菜单中选择Open命令,则屏幕出现Open对话框,在Open对话框中选中所需打开的M文件。在文档窗口可以对打开的M文件进行编辑修改,编辑完成后,将M文件存盘。 (2) 命令操作。在MATLAB命令窗口输入命令:edit 文件名,则打开指定的M文件。 (3) 命令按钮操作。单击MATLAB主窗口工具栏上的Open File命令按钮,再从弹出的对话框中选择所需打开的M文件。 3.2 程序控制结构 3.2.1 顺序结构 1.数据的输入 从键盘输入数据,则可以使用input函数来进行,该函数的调用格式为: A=input(提示信息,选项); 其中提示信息为一个字符串,用于提示用户输入什么样的数据。 如果在input函数调用时采用's'选项,则允许用户输入一个字符串。例如,想输入一个人的姓名,可采用命令: xm=input('What''s your name?','s'); 2.数据的输出 MATLAB提供的命令窗口输出函数主要有disp函数,其调用格式为

D实验五 M文件和MATLAB程序设计

实验五M文件和MATLAB程序设计 一、实验目的 matlab作为一种高级计算机语言,不仅可以命令行方式完成操作,也具有数据结构、控制流、输入输出等能力,本次实验通过熟悉和掌握m文件的建立与使用方法,以及函数与控制程序流程语句的使用,使学生具备一定的编程和程序调试能力。 1.掌握M文件的使用方法。 2.掌握if语句和switch语句的使用 3. 掌握循环语句的使用 4. 通过练习理解MATLAB编程方法。 二、实验原理 1.m文件 用matlab语言编写的程序,称为m文件。M文件根据调用方式的不同分为两类,命令文件(Script file)和函数文件(Function file)。区别? 2.程序控制结构 1)顺序结构 2)选择结构 (1)if语句a) 单分支if语句b) 双分支if语句c) 多分支if语句 (2)switch 语句 (3)try语句 3)循环结构 (1)for 语句 (2)while语句 (3)break语句、continue语句、return使用,区别? 3.函数文件 function 输出形参表=函数名(输入形参表) 注释说明部分 函数体语句 注意事项? 三、实验要求 1.首先上机练习PPT中各种流程控制语句的有关实例。 2.然后上机练习下面的实验习题。 四、实验习题

1.数论中一个有趣的题目:任意一个正整数,若为偶数,则用2除之,若为奇数,则与3相乘再加上1。重复此过程,最终得到的结果为1。如: 2→1 3→10→5→16→8→4→2→1 6→3→10→5→16→8→4→2→1 运行下面的程序,按程序提示输入n=1,2,3,5,7,8,9等数来验证这一结论。 %classic "3n+1" problem from number theory. while 1 n=input('Enter n,negative quits:'); if n<=0 break end a=n; while n>1 if rem(n,2)==0 n=n/2; else n=3*n+1; end a=[a,n]; end a end Enter n,negative quits: 2. 编程求满足∑=>m i i 11000020的最小m 值。 a=0; i=1; while (a<100000) a=a+pow2(i); i=i+1; end m=i-1 3. 编写一个函数,计算下面函数的值,给出x 的值,调用该函数后,返回y 的值。 function [y]=myfun1(x)

Matlab数字衍射光学实验讲义(一)

实验注意事项(必读) 1.没有弄清楚实验内容者,禁止接触实验仪器。 2.注意激光安全。绝对不可用眼直视激光束,或借助有聚光性的光学组件观察激光束,以免损伤眼睛。 3.注意用电安全。He-Ne激光器电源有高压输出,严禁接触电源输出和激光头的输入端,避免触电。 4.注意保持卫生。严禁用手或其他物品接触所有光学元件(透镜、反射镜、分光镜等)的光学表面;特别是 在调整光路中,要避免手指碰到光学表面。 5.光学支架上的调整螺丝,只可微量调整。过度的调整,不仅损坏器材,且使防震功能大减。 6.实验完成后,将实验所用仪器摆放整齐,清理一下卫生。

Matlab数字衍射光学实验一 计算机仿真过程是以仿真程序的运行来实现的。仿真程序运行时,首先要对描述系统特性的模型设置一定的参数值,并让模型中的某些变量在指定的范围内变化,通过计算可以求得这种变量在不断变化的过程中,系统运动的具体情况及结果。仿真程序在运行过程中具有以下多种功能: 1)计算机可以显示出系统运动时的整个过程和在这个过程中所产生的各种现象和状态。具有观测方便,过程可控制等优点; 2)可减少系统外界条件对实验本身的限制,方便地设置不同的系统参数,便于研究和发现系统运动的特性; 3)借助计算机的高速运算能力,可以反复改变输入的实验条件、系统参数,大大提高实验效率。因此.计算机仿真具有良好的可控制性(参数可根据需要调整)、无破坏性(不会因为设计上的不合理导致器件的损坏或事故的发生)、可复现性(排除多种随机因素的影响,如温度、湿度等)、易观察性(能够观察某些在实际实验当中无法或者难以观察的现象和难以实现的测量,捕捉稍纵即逝的物理现象,可以记录物理过程的每一个细节)和经济性(不需要贵重的仪器设备)等特点。 Matlab是MathWorks公司于1982年推出的一套高性能的数值计算和可视化软件。它集数值分析、矩阵运算、信号处理和图形显示于一体,构成了一个方便、界面友好的用户环境。它还包括了ToolBox(工具箱)的各类问题的求解工具,可用来求解特定学科的问题。Matlab的长处在于数值计算,能处理大量的数据,而且效率比较高。MathWorths公司在此基础上开拓了符号计算、文字处理、可视化建模和实时控制能力,增强了Matlab的市场竞争力,使Matlab成为市场主流的数值计算软件。Matlab产品族支持概念设计、算法开发、建模仿真、实时实现的理想的集成环境。其主要功能有:数据分析、数值和符号计算、工程与科学绘图、控制系统设计、数字图像信号处理、财务工程,建模、仿真、原型开发,应用开发,图形用户界面。 在光学仪器设计和优化过程中,计算机的数值仿真已经成为不可缺少的手段。通过仿真计算,可以大幅度节省实验所耗费的人力物力,特别是在一些重复实验工作强度较大且对实验器材、实验环境等要求较苛刻的情况下。如在大型激光仪器的建造过程中,结合基准实验的仿真计算结果可为大型激光器的设计和优化提供依据。仿真光学实验也可应用于基础光学教学。光学内容比较抽象,如不借助实验,很难理解,如光的干涉、菲涅耳衍射、夫琅禾费衍射等。传统的光学实验需要专门的实验仪器和实验环境。其操作比较烦琐,误差大现象也不明显,对改变参数多次观察现象也多有不便。MATLAB是当今国际上公认的在科技领域方面最为优秀的应用软件和开发环境。利用它对光学实验仿真可避免传统实验中的缺点,强大的功能使光学实验变得简便准确。基于MATLAB的科学可视化功能对光学仿真实验现象进行计算机模拟的效果更加准确明显。 1.实验目的: 掌握基本的Matlab编程语言,了解其编程特点;模拟几种常用函数,了解其编程过程及图像显示命令函数,掌握Matlab画图方法;通过设计制作一系列光学研究物体掌握其编程方法;掌握光波的matlab编程原理及方法,初步了解Matlab

圆孔矩孔的菲涅尔衍射模拟(matlab实现)-工程光学.docx

XX大学XXXX学院 工程光学综合练习?…圆孔、矩孔的菲涅尔衍射模拟

圆孔和矩孔的菲涅尔衍射模拟 一、原理 由恵更斯?菲涅尔原理町知接收屏上的 P点的复振幅可以表示为 其中F(Q)为衍射屏上的复振幅分布,K(B)为倾斜因子。根据基尔霍夫对此公式的完善,有 设衍射屏上点的坐标为(χ17yj,接收屏上点的坐标为(χ,y),衍射屏与接收屏间距离为“,当满足菲涅尔近似条件时,即 上式为菲涅尔衍射的傅里叶变换表达式,它表明除了积分号前面的一个与xl、yl无关的振幅和相位因子外,菲涅尔衍射的复振幅分布是孔径平面的复振幅分布和一个二次和位因子乘积的傅里叶变换。 相对于夫琅和费衍射而言,菲涅尔衍射的观察屏距衍射屏不太远。在菲涅尔衍射中,输入变最和输出变最分别为衍射孔径平面的光场分布利观察平面的光场以及光强分布,考虑到这三个量都是二维分布,而且MatIab主要应用于矩阵数值运第所以本程序选择用二维矩阵來存储衍射孔径平面和观察平而的场分布,并分别以矩阵的列数和行数來对应平面的直角坐标值(x,y)以及(x h yι)o 用MATLAB分别构造表示衍射屏和接收屏的二维矩阵。注意使两矩阵阶次相冋,考虑到运算最的要求,釆样点数不能过多,所以每个屏的X和y方向各取200到300点进行运算。根据式(4),选取合适的衍射屏和接收屏尺寸和相距 E(P) = C —K(θ)ciσ 把上式指数项中的二次项展开,并改写成傅里叶变换的形式,可以写成

的距离,模拟结果如下: 取典型的He-Ne激光器波长λ=632.8nm,固定衍射屏和接收屏尺寸和相距的距离,分别取不同的圆孔半径,得到以下三组衍射图样,其圆孔半径分别为12 mm ■ 2Omm, 5Omm 图 1 (r=12mm) 图 2 (r=20mm) 园礼形状 ?J 103 2CD 253 Tn 1DO 2C0 3□□ 衍射园洋 圆孔形状 3C0 2£0 2C0 1∞ 1Γ∩ E O 100 2C0 300 轨射區存 2UJ -200

相关文档
最新文档