模拟夫琅禾费衍射的matlab源代码

合集下载

不同形状孔的弗朗禾费衍射

不同形状孔的弗朗禾费衍射

−ⅈ
̃0 () ⅆ (2)

0
(0 )
现在假设一个坐标系,如图(1)
把坐标系带入到方程(2),则可以得到
图(1)

2
( 2 + 2)
(
)
2
(, ) =

× ∬ (0 , 0 ) − 0 +0 ⅆ0 ⅆ0

−∞
其中(0 , 0 )为衍射屏后的复振幅,为光波的波长, =
6. 正 N 变形
到此处,我们可以设想任意 N 边形衍射孔形成的衍射强度分布。
思路是这样的:将一个任意正 N 边形孔分割成 N 个分别全等的等腰三角形,然后
使每个等腰三角形所形成的衍射场相干叠加所
形成的衍射场就是这个正 N 边形所形成的衍射
场(如图(15))。
有计算机所绘制的图像和导出公式可以看出:
B(j)=pi*a*y(j)/(lmda*z);
I(i,j)=((sin(A(i)))/(A(i)+eps))^2*((sin(B(j)))/(B(j)+eps))^2;
end
end
>> figure(1)
>> imshow(I*225)
>> figure(2)
>> mesh(I)
8
图(8) 正方形孔的夫琅禾费衍射振动分布
并且用 matlab 和 mathematical 绘制出衍射强度分布的图像。由此,我们可以推
广出任意正 N 边形的夫琅禾费衍射公式。同时,我们假设任意不规则形状的夫琅
禾费衍射的计算思路。
关键字:夫琅禾费衍射,等腰三角形,正 N 变形
1. 引言

夫琅禾费矩孔衍射的特征及其MATLAB模拟_图文(精)

夫琅禾费矩孔衍射的特征及其MATLAB模拟_图文(精)
如图1,设波长为λ的平行光正入射到宽度为a (x 0轴
方向高度为b (y 0轴方向的矩孔上,若设矩孔上的光场分布均匀,则瞳函数为常数,即U 0 (x 0,y 0=A.由文献[5,6]可知,夫禾费矩孔衍射的衍射场为
U (θ1,θ2
= c e ik 0L 0
sin αα・sin
ββ
,(1
式中,θ1,θ2分别为x轴和y轴方向上的衍射角;
夫琅禾费矩孔衍射的特征及其MAT LAB模拟
蓝海江a
,潘晓明a
,吴建生
b
(柳州师范高等专科学校a .物理与信息科学系;b .数学与计算机科学系,广西柳州545004
摘 要:探讨了夫琅禾费矩孔衍射的特征,并利用MAT LAB对其进行模拟。经过比较,MAT LAB模拟结果与实验观测的结果非常吻合。
关键词:光学;夫琅禾费;矩孔;衍射;MAT LAB模拟
c =-i
λf
(ab A;k 0=
2
πλ0
为真空中的波数;L 0为光波从x 0,y 0坐标的原点出发沿着衍射方向到达场点P (x,y的光程,即参考光程,在积分过程中是不变的常量;α=πa sin θ1λ,β=πb sin θ2
λ
.
由光强公式I (θ1,θ2=U (θ1,θ2・U 3(θ1,θ2及(1式
可知,夫琅禾费矩孔衍射的光强分布为[5]
I (θ1,θ2=I 0
sin αα2・sin
ββ
2,(2式中,I 0= c c 3
=(ab 2(λf 2
A 2
.
(3
2.3夫琅禾费矩孔衍射的特征
由(2式可知,夫琅禾费矩孔衍射图样的主要特征是:衍射亮斑集中分布在两个相互垂直的方向上(x轴和y轴上,x轴方向上的亮斑宽度与矩孔的宽度a成反比,y轴方向上的亮斑宽度与矩孔的高度b成反比,即光波在哪个方向上受到的限制越大,那个方向的衍射就越明显.

基于matlab的衍射系统仿真(1)

基于matlab的衍射系统仿真(1)

《工程光学》综合性练习二题目:基于matlab的衍射系统仿真综合练习大作业二一、要求3-4人组成小组,对下面给出的各题目利用Matlab等工具进行仿真。

练习结束时每组提交一份报告及仿真程序。

在报告中应注明各仿真结果所对应的参数,如屏与衍射屏间距、孔径形状尺寸等。

二、仿真题目1.改变观察屏与衍射屏间距,观察观察屏上发生的衍射逐渐由菲涅耳衍射转为夫琅和费衍射1)原理图:S点光源发出的波长lam=500纳米S点发出光线经过单缝,缝宽a;单缝到衍射屏的距离L'2)Matlab代码clear;clcl=10; %l=input ('单缝到衍射屏的距离L=');a=0.2; %a=input('单缝的宽度(mm)a=');lam=500e-6; %lam=input('波长(nm)');x=-1:0.001:1; %接收屏边界y=x./sqrt(x.^2+l^2);z=a.*y/lam;I=1000*(sinc(z)).^2; %计算接受屏某点光强subplot(2,1,1) %绘制仿真图样及强度曲线image(2,x,I)colormap(gray(3))title('单缝衍射条纹')subplot(2,1,2)plot(x,I)title(光强分布)3)初始仿真图样(d=10)4)改变d之后的图样(d=1000)5)变化规律根据衍射屏以及接受屏的相对位置不同,由此产生菲涅尔衍射和夫琅禾费衍射的区别,根据我们模拟的情况得到菲涅尔衍射和夫琅禾费衍射的明显不同是夫琅禾费衍射条件下:中央有一条特别明亮的亮条纹,其宽度是其他亮条纹的两倍;其他亮条纹的宽度相等,亮度逐渐下降。

2.改变孔径形状、尺寸,观察图样变化1)原理图矩孔衍射:透镜焦距:1000mm;照射光波长:500nm;孔高:a(mm);孔宽:b(mm);圆孔衍射:圆孔直径:r(mm);照射光波长:500nm;照射光波长:500nm;2)matlab代码矩孔衍射:focallength=1000;lambda=500;a=2.0;b=2.0;resolution=64;center=(resolution)/2;A=zeros(resolution,resolution);for i=1:1:resolutionfor j=1:1:resolutionif abs(i-center)<a*10/2 & abs(j-center)<b*10/2 A(j,i)=255;endendendE=ones(resolution,resolution);k=2*pi*10000/focallength/lambda;imag=sqrt(-1);for m=1:1:resolutionx=m-center;for n=1:1:resolutiony=n-center;C=ones(resolution,resolution);for i=1:1:resolutionp=i-center;for j=1:1:resolutionq=j-center;C(j,i)=A(j,i)*exp(-imag*k*(x*p+y*q)); endendE(n,m)=sum(C(:));endendE=abs(E);I=E.^2;I=I.^(1/3);I=I.*255/max(max(I));L=I;I=I+256;CM=[pink(255).^(2/3);gray(255)];Colormap(CM);edge=(resolution-1)/20;[X,Y]=meshgrid([-edge:0.1:edge]);x=linspace(-edge,edge,resolution);y=linspace(-edge,edge,resolution);subplot(1,2,1);surf(x,y,L);axis([-edge,edge,-edge,edge,0,255]);caxis([0,511]);subplot(1,2,2);image(x,y,I);axis([-edge,edge,-edge,edge,0,511]);view(2);axis square;圆孔衍射:clearlmda=500e-9; %波长r=1.2e-3; %f = 1; %焦距N = 19;K = linspace(-0.1,0.1,N) ;lmda1 = lmda* ( 1 + K) ;xm = 2000* lmda* f;xs = linspace(-xm,xm,2000) ;ys = xs;z0 = zeros( 2000) ;[x,y]= meshgrid( xs) ;for i = 1: 19s = 2*pi*r*sqrt(x.^2 + y.^2)./(lmda1( i) ) ;z = 4* ( besselj( 1,s)./( s + eps) ).^2; %光强公式z0 = z0 + z;endz1 = z0 /19;subplot( 1,2,1)imshow( z1* 255) ; %平面图xlabel( 'x')ylabel( 'y')subplot( 1,2,2)mesh( x,y,z1) %三维图colormap(gray)xlabel( 'x')ylabel( 'y')zlabel( '光强')3)仿真图样:矩孔衍射:a=1,b=2a=2,b=2可知:矩孔在一个维度上展宽一定倍数将导致衍射图样在相同维度上缩短相同倍数,同时能量会更向中心亮斑集中。

MATLAB夫琅禾费衍射课程设计

MATLAB夫琅禾费衍射课程设计

课程设计任务书学生姓名:袁娜专业班级:电子科学与技术1201 班指导教师:工作单位:信息工程学院题目: 夫琅禾费矩孔﹑单缝和圆孔衍射图样一、设计目的了解MATLAB软件的基本知识,基本的程序设计,软件在高等数学和工程数学中的应用,学会使用软件进行数值计算和控制工程中的应用。

二、设计内容和要求1.绘制禾费矩孔、单缝和圆孔衍射图样,可以是二维的或三维的,也可以两种都有。

改变矩孔、单缝和圆孔的参数,比较衍射条纹的变化。

提示:参考《物理光学》教材或冯国英《波动光学》,画二维图时用image和colormap 函数,显示灰度图像时用colromap(gray(255)),255级灰度即可,画出的图和教材上的衍射图样一样。

三维图时就用mesh或surf函数。

2. 学习Matlab语言的概况和Matlab语言的基本知识。

3.学习Matlab语言的程序设计。

三、初始条件计算机;Matlab软件。

四、时间安排1、2015年01月19日,任务安排,课设具体实施计划与课程设计报告格式的要求说明。

2、2015年01月20日,查阅相关资料,学习Matlab语言的基本知识,学习MATLAB语言的应用环境、调试命令,绘图功能函数等。

3、2015年01月21日至2015年01月22日,Matlab课程设计制作和设计说明书撰写。

4、2015年01月23日,上交课程设计成果及报告,同时进行答辩。

指导教师签名:2015年01 月19日系主任(或负责教师)签名:2015年01 月19日目录摘要 (I)1 设计内容及要求 (1)1.1 设计的目的 (1)1.2 设计的要求 (1)2 设计原理及设计思路 (1)2.1 矩孔衍射原理 (1)2.2 单缝衍射原理 (2)2.3圆孔衍射原理 (3)3 程序设计 (3)3.1 矩孔衍射程序 (3)3.2 单缝衍射程序 (4)3.3 圆孔衍射程序 (6)4 图形仿真 (7)4.1 矩孔衍射仿真图样 (7)4.2 单缝衍射仿真图样 (8)4.3 圆孔衍射仿真图样 (8)5 心得体会 (10)参考文献 (11)摘要本文基于衍射理论,利用MATLAB软件编程来实现对夫琅禾费矩孔﹑单缝和圆孔衍射图样的计算机仿真,不仅参数很容易调节、模拟结果直观,而且与实验观测结果也非常吻合。

实验7 衍射的Matlab模拟

实验7 衍射的Matlab模拟

实验7衍射的Matlab模拟一、实验目的:掌握衍射的matlab模拟。

二、实验内容:1)单个圆孔夫朗和费衍射的matlab模拟2)双圆孔夫朗和费衍射的matlab模拟3)同一波长,狭缝数量分别为1、2、3、6、9、10时候的夫朗和费衍射的matlab模拟4)对4个不同波长的光照射时,狭缝数量分别为1、3时候的夫朗和费衍射的matlab 模拟5)单个圆孔菲涅尔衍射的matlab模拟6)模拟圆孔(或者单缝)衍射时,衍射屏到接收屏距离不同的时候衍射的图样1)clearclclam=632.8e-9;a=0.0005;f=1;m=300;ym=4000*lam*f;ys=linspace(-ym,ym,m);xs=ys;n=200;for i=1:mr=xs(i)^2+ys.^2;sinth=sqrt(r./(r+f^2));x=2*pi*a*sinth./lam;hh=(2*BESSELJ(1,x)).^2./x.^2;b(:,i)=(hh)'.*5000;B=b/max(b);endimage(xs,ys,b);colormap(gray(n));figure;plot(xs,B);colormap(green);-2.5-2-1.5-1-0.500.51 1.52 2.5x 10-3-2.5-2-1.5-1-0.50.511.522.5x 10-3-3-2-10123x 10-300.10.20.30.40.50.60.70.80.912)%双圆孔夫琅禾费衍射clear all close all clc %lam=632.8e-9;a=0.0005;f=1;m=300;ym=4000*lam*f;ys=linspace(-ym,ym,m);xs=ys;n=200;for i=1:m r=xs(i)^2+ys.^2;sinth=sqrt(r./(r+f^2));x=2*pi*a*sinth./lam;h=(2*BESSELJ(1,x)).^2./x.^2;d=10*a;deltaphi=2*pi*d*xs(i)/lam;hh=4*h*(cos(deltaphi/2))^2;b(:,i)=(hh)'.*5000;end image(xs,ys,b);colormap(gray(n));-2.5-2-1.5-1-0.500.51 1.52 2.5x 10-3-2.5-2-1.5-1-0.50.511.522.5x 10-33)lamda=500e-9;%波长N=[1236910];for j=1:6a=2e-4;D=5;d=5*a;ym=2*lamda*D/a;xs=ym;%屏幕上y 的范围n=1001;%屏幕上的点数ys=linspace(-ym,ym,n);%定义区域for i=1:n sinphi=ys(i)/D;alpha=pi*a*sinphi/lamda;beta=pi*d*sinphi/lamda;B(i,:)=(sin(alpha)./alpha).^2.*(sin(N(j)*beta)./sin(beta)).^2;B1=B/max(B);end NC=256;%确定灰度的等级Br=(B/max(B))*NC;figure(j);subplot(1,2,1);image(xs,ys,Br);colormap(hot(NC));%色调处理subplot(1,2,2);plot(B1,ys,'k');end-0.4-0.200.20.4-0.025-0.02-0.015-0.01-0.00500.0050.010.0150.020.02500.51-0.025-0.02-0.015-0.01-0.0050.0050.010.0150.020.025狭缝数为1-0.4-0.200.20.4-0.025-0.02-0.015-0.01-0.00500.0050.010.0150.020.02500.51-0.025-0.02-0.015-0.01-0.0050.0050.010.0150.020.025狭缝数为2-0.4-0.200.20.4-0.025-0.02-0.015-0.01-0.00500.0050.010.0150.020.02500.51-0.025-0.02-0.015-0.01-0.0050.0050.010.0150.020.025狭缝数为3-0.4-0.200.20.4-0.025-0.02-0.015-0.01-0.00500.0050.010.0150.020.02500.51-0.025-0.02-0.015-0.01-0.0050.0050.010.0150.020.025-0.4-0.200.20.4-0.025-0.02-0.015-0.01-0.00500.0050.010.0150.020.02500.51-0.025-0.02-0.015-0.01-0.0050.0050.010.0150.020.025狭缝数为9狭缝数为6-0.4-0.200.20.4-0.025-0.02-0.015-0.01-0.00500.0050.010.0150.020.02500.51-0.025-0.02-0.015-0.01-0.0050.0050.010.0150.020.0254)lamda=400e-9:100e-9:700e-9;%波长N=[13];a=2e-4;D=5;d=5*a;for j=1:4ym=2*lamda(j)*D/a;xs=ym;%屏幕上y 的范围n=1001;%屏幕上的点数ys=linspace(-ym,ym,n);%定义区域for k=1:2for i=1:n sinphi=ys(i)/D;alpha=pi*a*sinphi/lamda(j);beta=pi*d*sinphi/lamda(j);B(i,:)=(sin(alpha)./alpha).^2.*(sin(N(k)*beta)./sin(beta)).^2;B1=B/max(B);end NC=256;%确定灰度的等级Br=(B/max(B))*NC;figure();subplot(1,2,1);image(xs,ys,Br);colormap(hot(NC));%色调处理subplot(1,2,2);狭缝数为10plot(B1,ys,'k');end end-0.4-0.200.20.4-0.02-0.015-0.01-0.00500.0050.010.0150.0200.51-0.02-0.015-0.01-0.0050.0050.010.0150.02Lamda=400nm,N=1-0.4-0.200.20.4-0.02-0.015-0.01-0.00500.0050.010.0150.0200.51-0.02-0.015-0.01-0.0050.0050.010.0150.02-0.4-0.200.20.4-0.025-0.02-0.015-0.01-0.00500.0050.010.0150.020.02500.51-0.025-0.02-0.015-0.01-0.0050.0050.010.0150.020.025Lamda=400nm,N=3Lamda=500nm,N=1-0.4-0.200.20.4-0.025-0.02-0.015-0.01-0.00500.0050.010.0150.020.02500.51-0.025-0.02-0.015-0.01-0.0050.0050.010.0150.020.025-0.4-0.200.20.4-0.03-0.02-0.0100.010.020.0300.51-0.03-0.02-0.010.010.020.03Lamda=500nm,N=3Lamda=600nm,N=1-0.4-0.200.20.4-0.03-0.02-0.0100.010.020.0300.51-0.03-0.02-0.010.010.020.03-0.4-0.200.20.4-0.03-0.02-0.0100.010.020.0300.51-0.04-0.03-0.02-0.010.010.020.030.04Lamda=600nm,N=3Lamda=700nm,N=1-0.4-0.200.20.4-0.03-0.02-0.0100.010.020.0300.51-0.04-0.03-0.02-0.010.010.020.030.045)clearclcN=300;r=15;a=1;b=1;I=zeros(N,N);[m,n]=meshgrid(linspace(-N/2,N/2-1,N));D=((m-a).^2+(n-b).^2).^(1/2);i=find(D<=r);I(i)=1;subplot(2,2,1);imagesc(I)colormap([000;111])axis imagetitle('衍射前的图样')L=300;M=300;[x,y]=meshgrid(linspace(-L/2,L/2,M));lamda=632.8e-6;k=2*pi/lamda;z=1000000;Lamda=700nm,N=3h=exp(j*k*z)*exp((j*k*(x.^2+y.^2))/(2*z))/(j*lamda*z); H=fftshift(fft2(h));%传递函数B=fftshift(fft2(I));%圆孔频谱G=H.*B;U=fftshift(ifft2(G));Br=(U/max(U));subplot(2,2,2);imshow(abs(U));axis image;colormap(hot)%figure,imshow(C);title('衍射后的图样');subplot(2,2,3);mesh(x,y,abs(U));subplot(2,2,4);plot(abs(Br))6)lamda=500e-9;%波长N=1;%缝数,可以随意更改变换a=2e-4;D=3:7;d=5*a;for j=1:5ym=2*lamda*D(j)/a;xs=ym;%屏幕上y的范围n=1001;%屏幕上的点数ys=linspace(-ym,ym,n);%定义区域for i=1:nsinphi=ys(i)/D(j);alpha=pi*a*sinphi/lamda;beta=pi*d*sinphi/lamda;B(i,:)=(sin(alpha)./alpha).^2.*(sin(N*beta)./sin(beta)).^2;B1=B/max(B);endNC=256;%确定灰度的等级Br=(B/max(B))*NC;figure();subplot(1,2,1)image(xs,ys,Br);colormap(hot(NC));%色调处理subplot(1,2,2)plot(B1,ys,'k');end-0.4-0.200.20.4-0.015-0.01-0.00500.0050.010.01500.51-0.015-0.01-0.0050.0050.010.015D=3m-0.4-0.200.20.4-0.02-0.015-0.01-0.00500.0050.010.0150.0200.51-0.02-0.015-0.01-0.0050.0050.010.0150.02-0.4-0.200.20.4-0.025-0.02-0.015-0.01-0.00500.0050.010.0150.020.02500.51-0.025-0.02-0.015-0.01-0.0050.0050.010.0150.020.025D=5m D=4m-0.4-0.200.20.4-0.03-0.02-0.0100.010.020.0300.51-0.03-0.02-0.010.010.020.03-0.4-0.200.20.4-0.03-0.02-0.0100.010.020.0300.51-0.04-0.03-0.02-0.010.010.020.030.04D=7m D=6m。

模拟夫琅禾费衍射的matlab源代码

模拟夫琅禾费衍射的matlab源代码

源代码:N=512;disp('衍射孔径类型1.圆孔 2.单缝3.方孔')kind=input('please input 衍射孔径类型:');% 输入衍射孔径类型while kind~=1&kind~=2&kind~=3disp('超出选择范围,请重新输入衍射孔径类型');kind=input('please input 衍射孔径类型:');% 输入衍射孔径类型endswitch(kind)case 1r=input('please input 衍射圆孔半径(mm):');% 输入衍射圆孔的半径I=zeros(N,N);[m,n]=meshgrid(linspace(-N/16,N/16-1,N));D=(m.^2+n.^2).^(1/2);I(find(D<=r))=1;subplot(1,2,1),imshow(I);title('生成的衍射圆孔');case 2a=input('please input 衍射缝宽:');% 输入衍射单缝的宽度b=1000;% 单缝的长度I=zeros(N,N);[m,n]=meshgrid(linspace(-N/4,N/4,N));I(-a<m&m<a&-b<n&n<b)=1;subplot(1,2,1);imshow(I);title('生成的衍射单缝');case 3a=input('please input 方孔边长:');% 输入方孔边长I=zeros(N,N);[m,n]=meshgrid(linspace(-N/4,N/4,N));I(-a/2<m&m<a/2&-a/2<n&n<a/2)=1;subplot(1,2,1),imshow(I);title('生成的方孔');otherwise kind=input('please input 衍射孔径类型:');% 输入衍射孔径类型end% 夫琅禾费衍射的实现过程L=500;[x,y]=meshgrid(linspace(-L/2,L/2,N));lamda_1=input('please input 衍射波长(nm):');% 输入衍射波长;lamda=lamda_1/1e6k=2*pi/lamda;z=input('please input 衍射屏距离衍射孔的距离(mm):');% 衍射屏距离衍射孔的距离h=exp(1j*k*z)*exp((1j*k*(x.^2+y.^2))/(2*z))/(1j*lamda*z);%脉冲相应H =fftshift(fft2(h));%传递函数B=fftshift(fft2(I));%孔频谱G=fftshift(ifft2(H.*B));subplot(1,2,2),imshow(log(1+abs(G)),[]);title('衍射后的图样');figuremeshz(x,y,abs(G));title('夫琅禾费衍射强度分布')实验输入:衍射孔径类型1.圆孔 2.单缝3.方孔please input 衍射孔径类型:1please input 衍射圆孔半径(mm):3please input 衍射波长(nm):632lamda =6.3200e-04please input 衍射屏距离衍射孔的距离(mm):1000000实验结果:程序说明:本实验可以选择孔径类型、孔径半径、输入波长、衍射屏和衍射孔的距离等。

写平行光束分别通过圆孔和矩形孔的菲涅尔衍射的matlab代码

写平行光束分别通过圆孔和矩形孔的菲涅尔衍射的matlab代码

写平行光束分别通过圆孔和矩形孔的菲涅尔衍射的matlab代码1. 引言1.1 概述在光学领域中,菲涅尔衍射是一种常见的现象,它描述了当平行光束通过孔洞或物体边缘时所产生的衍射效应。

这个现象在很多应用中都具有重要意义,例如光学仪器的设计、天文学以及激光技术等领域。

理解和研究菲涅尔衍射现象对于深入探究光的波动性质以及相干光的传播具有重要意义。

1.2 文章结构本文将从以下几个方面进行讨论:首先介绍菲涅尔衍射理论中与本文相关的基本概念和原理;其次详细阐述使用MATLAB代码实现菲涅尔衍射的方法和步骤;然后,通过对圆孔和矩形孔两种情况下的菲涅尔衍射结果进行分析和讨论;最后给出文章总结,并提出进一步研究方向。

1.3 目的本文旨在通过编写MATLAB代码来模拟实现平行光束通过圆孔和矩形孔时的菲涅尔衍射现象,并利用结果分析和比较两种情况下的衍射效应。

通过这样的研究,可以加深对菲涅尔衍射原理的理解,并为后续相关研究提供参考和借鉴。

同时,通过MATLAB代码实现,读者也可以根据自己的需求进行扩展和修改,从而进一步探索不同形状孔洞的菲涅尔衍射特性。

2. 菲涅尔衍射理论2.1 光的波动特性菲涅尔衍射是一种描述光波传播和衍射现象的理论。

根据光的波动特性,当光通过一个孔径较小的障碍物时,它会弯曲并发生衍射现象。

在菲涅尔衍射中,平行光束通过圆孔或矩形孔后,在进入屏幕上的观察点处产生干涉图样。

2.2 菲涅尔近似理论菲涅尔近似理论是在进一步简化计算过程中使用的近似方法。

它假设观察点距离光源和障碍物足够远,使得远场近似成立。

2.3 圆孔和矩形孔的描述圆孔和矩形孔是两种常见形状的障碍物,用于描述光线传播时发生的菲涅尔衍射效应。

- 圆孔: 圆孔通常由一个具有确定半径大小的圆形开口组成。

当平行光束通过圆孔时,它会扩散并形成一系列同心环状条纹。

- 矩形孔: 矩形孔是由一个具有确定边长的矩形开口组成。

当平行光束通过矩形孔时,它会扩散并在屏幕上生成一系列矩形衍射图样。

基于matlab gui设计的光学实验仿真

基于matlab gui设计的光学实验仿真

2007级计算机课程设计测控与光电技术学院电子科学与技术专业课程设计题目圆孔衍射现象计算机仿真设计学生姓名吴海班级070832指导教师钟可君日期2010 年6 月28 日南昌航空大学测试与光电工程学院计算机课程设计任务书电子科学与技术系070832 班学生:吴海课题名称:圆孔衍射现象计算机仿真设计课题内容:1、课题设计要求:(1)分析圆孔衍射的物理过程,建立数学模型;(2)设计算法流程图;(3)编写程序,并对仿真结果进行分析。

2、工作进度安排:查阅资料,设计算法流程图6月28日~7月4日第18周编写程序,撰写报告7月5日~7月9日第19周主要参考资料:[1]. 姚启钧.光学教程[M]. 北京:高等教育出版社[2]. 宋清,熊万杰.光学现象的计算机仿真[J].中山大学学报论丛,2005,25(3):24-29.[3].圆孔衍射与像分辨本领的MATLABF仿真分析[J].湖北工学院学报,2004,19(5):47-49.[4].MATLAB GUI在光学仿真中的应用[J].通化师范学院学报,2010,31(2):52-54.系负责人:指导教师:钟可君时间:2010年6月21日单孔衍射上机试验上机试验程序(1)%圆孔衍射clcclearlam=500e-9a=1e-3f=1m=300;ym=4000*lam*f;ys=linspace(-ym,ym,m);xs=ys;n=200;for i=1:mr=xs(i)^2+ys.^2;sinth=sqrt(r./(r+f^2));x=2*pi*a*sinth./lamhh=(2*BESSELJ(1,x)).^2./x.^2;b(:,i)=(hh)'.*5000;endsubplot(1,2,1)image(xs,ys,b)colormap(gray(n))subplot(1,2,2)b(:,m/2)plot(ys,b(:,m/2))程序运行后的结果单孔衍射图光强分布图[摘要]运用MATLAB6的软件平台,编制演示程序,对圆孔衍射像分辨本领进行仿真分析.[关键词]圆孔衍射;分辨本领; Airy斑;仿真分析意义:圆孔作为光学仪器基本形状,其衍射现象在光学研究中占有重要地位.光学衍射现象的实验演示需要特定的实验仪器和实验所,给研究工作带来许多不便.另外,清晰的圆孔衍射图样,要求的圆孔半径很小,在一般实验中难以实现.基于MATLAB6软件强大的计算能力和可视化功能上的优势,利用计算机对圆孔衍射过程进行仿分析,可以使衍射现象直观地表现出来;通过调整实验参数,可以同步生成不同实验条件下的衍射图样,便于对衍射现象和像分辨本领进行比较分析;利用色图表现光强分布,使实验效果更为逼真,在实和研究中具有重要意义.1圆孔衍射的实验装置与数学模型的、建立圆孔夫琅禾费衍射装置如图1所示,S为点光源,位于透镜L1的焦平面的主光轴上,光屏E置于焦距为D的透镜L2的焦平面上.圆孔P的半径为R.入射光波长为λ.射圆孔时,沿衍射角θ方向传播的次波在光屏Q(x,y)处的光强分布为[1]Iθ= I0(J1(2m)m)2.其中:m=πRλsinθ,sinθ=x2+y2x2+y2+D2;I0为分常数.2主程序编写与衍射图样的生成运用MATLAB编制运算程序circle_aperturebase01.m,程序运行后,在坐标区可以生成圆孔琅禾费衍射图样.为了满足程序的普遍性和通用性,主程序中共设置5个输入参数,分别为λ,D,R,θ0(入射光垂直入射为θ0=0),最大坐标范围xmax.长度以毫米为单位.主程序circle_aperture_base01.m如下:function circle_aperture_base01(lambda,D,R,theta0,xmax) %对参量赋值lambda=6.328*1e-4;D=64;R=0.02;xmax=pi;theta0=0%设定图像的范围,并把x分成401个点(根据程序需要,设为奇数点).x=linspace(-xmax,xmax,401);[x,y]=meshgrid(x); %%建立x,y网格%建立强度分布矩阵x0=D*tan(theta0);sin_theta=sqrt(((x-x0).^2+y.^2)./((x-x0).^2+y.^2+D^2)); %%sin(theta)z=R*sin_theta/lambda; %%z=Rsin(theta)/lambdam=pi*z;I=(bessel(1,2*m)./m).^2;%生成强度分布图%绘制相对光强与x坐标的关系曲线(沿y=0方向) subplot('position',[0.15 0.6 0.7 0.35]),plot(x(1,:),I((end+1)/ 2,:))%绘制相对光强与坐标(R*sin(theta)/lambda)的关系曲线(沿y=0方向)subplot(2,2,3),plot(z((end+1)/2,:),I((end+1)/2,:));%绘制强度分布的灰度图NCLevers=255; %%确定用的灰度等级为255Imax=max(max(I));Ir=I/Imax*NCLevers;colormap(gray(NCLevers)); %%用灰度级颜色绘图subplot(2,2,4),image(x(1,:),y(:,1),Ir) %%绘制强度的灰度图axis squareaxis([-2 2 -2 2]);colorbar('vert')程序运行后,在坐标区,生成强度分布曲线和色图(如图2,图中的极值判断和文字标示命令在程序中未列出).图中,上图表示强度沿x坐标(y =0)分布,下图左侧表示强度随无量纲因子Rsinθ/λ的变化规律,右侧则表示光强在xoy平面的变化规律,中央的白色亮区为Airy斑.在光强曲线图中,用红点和绿点表示极大值点和极小值点,对应坐标也在图2(c)中央明区中给出.3衍射图样分析3.1Airy斑与极小值由图2可知,当Rsinθ/λ≈0.61时,出现第一级极小值.定义在光屏上由两个第一级极小值之间所围圆形区间为Airy斑.Airy斑的中心位于坐标原点,其角半径为0.61λ/R,如图所示.3.2第一级次极大由图2可知,当Rsinθ/λ≈0.82时,出现第一级次极大值,其相对光强为1.7%.其余次极大的光强将更小.3.3参数对衍射图样的影响进一步调整参数R、D及λ,其Airy斑及各级衍射环的相对位置发生变化.如图3所示,Airy斑的角半径与R成反比,与λ成正比,其线半径与D成正比.5结论从上面的一系列讨论可以发现,通过计算机编程,对圆孔夫琅禾费衍射进行仿真分析,无需复杂的实验仪器和苛刻的实验环境,可在短时间内完成多种实验条件衍射图样的演示.运用MATLAB强大的数值计算功能和优越的可视化特征,可以同步求出衍射图样的一些重要物理量的数值,满足仿真实验的需要,为教学和研究工作提供了强有力的演示工具.利用计算机编程,仿真演示复杂的物理现象, 作为计算物理学的一个发展方向,具有广阔的发展前景.[参考文献][1]姚启钧.光学教程[M].北京:高等教育出版社, 2002.[2]赵凯华,钟锡华.光学(上册)[M].北京:北京大学出版社, 1984.摘要:采用matlab7.0强大的函数作图功能对圆孔、矩孔和双矩孔的夫琅和费衍射进行模拟,建立直观形象并且精确完整的理论模型,并附上程序代码,将干涉理论联系起来,分析衍射和干涉的本质。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

源代码:
N=512;
disp('衍射孔径类型 1.圆孔 2.单缝 3.方孔')
kind=input('please input 衍射孔径类型:');% 输入衍射孔径类型
while kind~=1&kind~=2&kind~=3
disp('超出选择范围,请重新输入衍射孔径类型');
kind=input('please input 衍射孔径类型:');% 输入衍射孔径类型
end
switch(kind)
case 1
r=input('please input 衍射圆孔半径(mm):');% 输入衍射圆孔的半径
I=zeros(N,N);
[m,n]=meshgrid(linspace(-N/16,N/16-1,N));
D=(m.^2+n.^2).^(1/2);
I(find(D<=r))=1;
subplot(1,2,1),imshow(I);
title('生成的衍射圆孔');
case 2
a=input('please input 衍射缝宽:');% 输入衍射单缝的宽度
b=1000;% 单缝的长度
I=zeros(N,N);
[m,n]=meshgrid(linspace(-N/4,N/4,N));
I(-a<m&m<a&-b<n&n<b)=1;
subplot(1,2,1);imshow(I);
title('生成的衍射单缝');
case 3
a=input('please input 方孔边长:');% 输入方孔边长
I=zeros(N,N);
[m,n]=meshgrid(linspace(-N/4,N/4,N));
I(-a/2<m&m<a/2&-a/2<n&n<a/2)=1;
subplot(1,2,1),imshow(I);
title('生成的方孔');
otherwise kind=input('please input 衍射孔径类型:');% 输入衍射孔径类型
end
% 夫琅禾费衍射的实现过程
L=500;
[x,y]=meshgrid(linspace(-L/2,L/2,N));
lamda_1=input('please input 衍射波长(nm):');% 输入衍射波长;
lamda=lamda_1/1e6
k=2*pi/lamda;
z=input('please input 衍射屏距离衍射孔的距离(mm):');% 衍射屏距离衍射孔的距离
h=exp(1j*k*z)*exp((1j*k*(x.^2+y.^2))/(2*z))/(1j*lamda*z);%脉冲相应H =fftshift(fft2(h));%传递函数
B=fftshift(fft2(I));%孔频谱
G=fftshift(ifft2(H.*B));
subplot(1,2,2),imshow(log(1+abs(G)),[]);
title('衍射后的图样');
figure
meshz(x,y,abs(G));
title('夫琅禾费衍射强度分布')
实验输入:衍射孔径类型1.圆孔 2.单缝3.方孔
please input 衍射孔径类型:1
please input 衍射圆孔半径(mm):3
please input 衍射波长(nm):632
lamda =6.3200e-04
please input 衍射屏距离衍射孔的距离(mm):1000000
实验结果:
程序说明:本实验可以选择孔径类型、孔径半径、输入波长、衍射屏和衍射孔的距离等。

当衍射屏和衍射孔的距离相对较小时,此衍射为菲涅耳衍射,当距离相对较大时满足夫琅禾费衍射的条件,两者的程序一样,只是距离Z的大小不一致。

又由于夫琅禾费衍射与傅里叶变换成正比,只差一个系数关系。

所以程序中的衍射既是直接对物光进行傅里叶变换即可。

相关文档
最新文档