MATLAB模拟演示小孔衍射
- 格式:doc
- 大小:175.00 KB
- 文档页数:7
《工程光学》综合性练习二题目:基于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可知:矩孔在一个维度上展宽一定倍数将导致衍射图样在相同维度上缩短相同倍数,同时能量会更向中心亮斑集中。
实验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。
源代码: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;衍射积分;傅立叶变换;计算机模拟引言:美国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编写程序如下,得到图1lam=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;图1 单缝衍射的光强分布 sumcos=sum(cos(alpha));sumsin=sum(sin(alpha));B(i,:)=(sumcos^2+sumsin^2)/np^2;endN=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:nr1=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)*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 Φ编写程序如下:得到图3clearlam=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;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);(二)傅立叶变换方法:在傅立叶变换光学中我们知道夫琅和费衍射场的强度分布就等于屏函数的功率谱。
利用菲涅尔—基尔霍夫衍射公式对问题进行处理,通过去不同的z 值观察近场,菲涅尔区,夫琅和费区的衍射条纹。
菲涅尔—基尔霍夫衍射公式:()()()()000exp cos ,cos ,2jk r r A E P ds j r r λ∑+⎡⎤-⎣⎦=⋅⋅⎰⎰n r n r ()()100exp E E P A jkr ==由于单色平面波垂直照射,()()10, cos ,1E P A ==-n r ,由于一般考虑光强的相对值,所以分析时取A=1,()cos cos ,z r θ==n r ,并对方孔进行微元,将方孔每个点在光屏上衍射的复振幅进行叠加,即计算E x ,y = z iλe ikr z r+12r ds ,从而得到光屏上的衍射条纹。
对于方孔编程时采用循环的方式,对于光屏则利用矩阵对光屏整体的复振幅,光强等进行分析,加快运算速度。
实现代码clear;lambda=6.32e-7;%波长k=2*pi/lambda;z=550;%光屏位置a=0.01;b=0.01;%方孔尺寸x1=linspace(-0.005,0.005,199);y1=linspace(-0.005,0.005,199);%将方孔分为许多小的微元x=linspace(-0.2,0.2,299);y=linspace(-0.2,0.2,299);%将光屏分为许多小的微元[X,Y]=meshgrid(x,y);%用二维矩阵描述光屏上点的位置E=zeros(299,299);%用于存放光屏上每个点的复振幅r=zeros(299,299);%用于存放光屏上没一点对应方孔上点的距离for l=1:199for j=1:199 %计算方孔上的每个点在光屏上的复振幅r=sqrt((X-x1(l)).^2+(Y-y1(j)).^2+z*z); %当前方孔上点到光屏上各个点的距离E=E+(-i/lambda)*(exp(i*k*r)).*(z./(2*r.*r)+1./(2*r))*z; %对不同点在光屏上的复振幅进行累加 endendE1=conj(E);I=E1.*E; %求光强% pcolor(y,x,I) %作图% colorbarIx= I(1:299,200);%光屏中心水平方向光强分布plot(x,Ix)夫琅和费区:Z=550m光强分布光屏中心水平方向光强分布Z=1m近场区:Z=0.001m。
《MATLAB语言》课程论文MATLAB模拟演示小孔衍射姓名:王照义学号:12010245259专业:通信工程班级:10级通信工程指导老师:汤全武学院:物理电气信息学院完成日期:2011-12-10MATLAB模拟演示小孔衍射(王照义 12010245259 2010级通信班)[摘要]以单色标量波衍射理论为基础,研究了均匀平面波从不同角度入射小孔阵列的衍射特性。
运用单孔衍射理论,同时考虑相邻小孔间衍射光强的相互影响,建立了小孔阵列衍射的理论模型和光强分布的数值积分式,小孔为硬边小孔。
利用Matlab对500 nm波长的平面波入射微小方孔阵列衍射图样进行了计算机仿真,得到了不同几何参量下平面波从不同角度入射时的衍射图样的一维和二维光强分布图。
[关键字] 小孔衍射 MATLAB一、光的衍射种类包括:单缝衍射、圆孔衍射、圆板衍射及泊松亮斑光在传播过程中,遇到障碍物或小孔(窄缝)时,它有离开直线路径绕道障碍物阴影里去的现象。
这种现象叫光的衍射。
衍射时产生的明暗条纹或光环,叫衍射图样。
产生衍射的条件是:由于光的波长很短,只有十分之几微米,通常物体都比它大得多,但是当光射向一个针孔、一条狭缝、一根细丝时,可以清楚地看到光的衍射。
用单色光照射时效果好一些,如果用复色光,则看到的衍射图案是彩色的。
1.衍射现象光绕过障碍物偏离直线传播路径而进入阴影区里的现象,叫光的衍射。
光的衍射和光的干涉一样证明了光具有波动性。
2.光产生明显衍射的条件小孔或障碍物的尺寸比光波的波长小,或者跟波长差不多时,光才能发生明显的衍射现象。
由于可见光波长范围为4×10-7m至7.7×10-7m之间,所以日常生活中很少见到明显的光的衍射现象。
任何障碍物都可以使光发生衍射现象,但发生明显衍射现象的条件是“苛刻”的。
当障碍物的尺寸远大于光波的波长时,光可看成沿直线传播。
注意,光的直线传播只是一种近似的规律,当光的波长比孔或障碍物小得多时,光可看成沿直线传播;在孔或障碍物可以跟波长相比,甚至比波长还要小时,衍射就十分明显。
第14卷第4期大 学 物 理 实 验 V ol.14N o.42001年12月出版PHY SIC A L EXPERI ME NT OF C O LLEGE Dec.2001收稿日期:2001-07-30文章编号:1007-2934(2001)04-0047-02用MAT LAB 语言模拟光衍射实验周 忆(安徽省科学技术培训中心,合肥,230031) 梁 齐(合肥工业大学,合肥,230009)摘 要:用M AT LAB 语言模拟编写了光衍射的模拟实验程度,给出了五种元件的夫琅和费衍射图。
关键词:衍射;模拟;M AT LAB 语言中图分类号:O4-39 文献标识码:A光的衍射现象是光具有波动性的重要特征,衍射无论在理论研究还是在大学物理教学中都占有较重要的地位。
笔者利用MAT LAB 较强的绘图和图像功能,针对多种衍射元件(单缝、双缝、光栅、矩孔、圆孔)编写了光衍射的模拟实验程序。
在计算机的模拟光的衍射,条件限制较少,对于衍射的实验教学是一种较好的补充。
程序首先根据衍射强度分布的理论公式及实验参数建立衍射相对强度的数据矩阵B (x ,y )然后利用image (B )和colormap (gray )命令绘出衍射图样。
同时,也绘制了衍射光强分布的二维或三维图。
单缝夫琅和费衍射的模拟结果见图1。
衍射光强公式为I =I 0(sin u/u )2,u =(πa sin θ/λ),a 是缝宽,λ是入射光的波长,θ是衍射角。
设观察屏位于单缝后正透镜的焦平面上,f 为透镜的焦距,x 为屏上横向坐标。
θ=arctan (x/f )。
模拟分成三组:第一组,λ=600nm ,f =600mm ,(a )a =0.20mm ;(b )a =0.10mm ;(c )a =0.05mm 第二组,a =0.10mm ,f =600mm ,(d )λ=500nm ;(e )a =600nm ;(f )λ=700nm第三组,a =0.10mm ,λ=600nm ,(g )f =300mm ;(h )f =600mm ;(i )f =900mm以下内容中,取λ=600nm ,f =600mm ,衍射图样横坐标x 和纵坐标y 的范围均为[-20,20]mm 。
菲涅尔衍射Matlab仿真——《高等物理光学》实验报告学院:物理学院姓名:廖宝鑫学号:20目录1. 菲涅尔衍射衍射原理 ......................................................... 错误!未定义书签。
2.实验想法及步骤 ................................................................. 错误!未定义书签。
实验思路.......................................................................... 错误!未定义书签。
实验步骤.......................................................................... 错误!未定义书签。
3.程序源代码: ..................................................................... 错误!未定义书签。
4.运行结果展示 ..................................................................... 错误!未定义书签。
5.结论 ..................................................................................... 错误!未定义书签。
1. 菲涅尔衍射衍射原理假设一个有限孔径,设孔径屏的直角坐标系为(x0,y0),并且观察平面与孔屏平行,两个平面间的间距为z ,观察平面的坐标系为(x,y ),这时,观察平面上的场可以表示为()()()()0000000,,,,0exp{j2}x y x y U x y z df df dx dy U x y f x x f y y π∞-∞∑=⎡⎤⋅-+-⎣⎦⎰⎰(1)根据近轴近似条件()222112x y f f λ≈-+ (2)同时利用傅里叶变换关系先对,x y f f 进行积分,得到如下的菲涅尔公式()()()()()220000000exp jkz ,,,exp{j }U x y z dx dy U x y x x y y j z zπλλ∑⎡⎤=⋅-+-⎣⎦⎰(3) 令()()()()22exp jkz ,exp{j }h x y x y j z z πλλ⎡⎤=+⎣⎦则式(3)可以写为()()()()()0000000,,,,y ,,y U x y z U x y h x x y dx dy U x y h x ∑=--=*⎰ (4)对(4)做傅里叶变换可以得到()()()0,,,,,x y x y x y A f f z A f f H f f z = (5)式中:()(){}00,,x y A f f FFT U x y =对于单位振幅入射平面波()(){}00,,x y A f f FFT t x y =()(){},,x y H f f FFT h x y =2.实验想法及步骤 实验思路根据以上原理,传递函数(),x y H f f 已知,只需要求得透射孔径的透过率函数()0,t x y ,然后对透过率函数进行傅里叶变换得,并与传递函数相乘得到(),,x y A f f z ,最后做一个逆傅里叶变换得到()(),,=IFFT{,,}x y U x y z A f f z 。
模拟夫琅禾费衍射实验程序说明:本实验可以选择孔径类型、孔径半径、输入波长、衍射屏和衍射孔的距离等。
当衍射屏和衍射孔的距离相对较小时,此衍射为菲涅耳衍射,当距离相对较大时满足夫琅禾费衍射的条件,两者的程序一样,只是距离Z的大小不一致。
又由于夫琅禾费衍射与傅里叶变换成正比,只差一个系数关系。
所以程序中的衍射既是直接对物光进行傅里叶变换即可。
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. 打开MATLAB软件,创建一个新的脚本文件。
2. 在脚本文件中,定义多边形的边长、角度和波长等参数。
3. 使用MATLAB中的绘图函数,绘制多边形的几何形状。
4. 根据衍射公式计算多边形每个角产生的衍射光强分布。
5. 在同一幅图上绘制出衍射图案,以便观察和比较。
6. 分析衍射图案的规律和特点,理解多边形衍射孔的工作原理。
7. 清理工作空间,保存脚本文件。
四、实验结果及分析以下是实验中得到的衍射图案示例:图1:正方形衍射孔的衍射图案(请在此处插入正方形衍射孔的衍射图案)分析:从图中可以看出,正方形衍射孔产生了4个明显的衍射级次,每个级次的强度分布呈现出对称性。
这是因为正方形有4个相等的边,每个角产生的衍射级次相同。
图2:六边形衍射孔的衍射图案(请在此处插入六边形衍射孔的衍射图案)分析:六边形衍射孔产生了6个明显的衍射级次,每个级次的强度分布也呈现出对称性。
这是因为六边形有6个相等的边,每个角产生的衍射级次相同。
与正方形相比,六边形的衍射图案更加复杂,这是因为六边形的角比正方形的角更多。
通过以上实验结果,我们可以得出以下结论:多边形衍射孔产生的衍射图案具有对称性,每个角产生的衍射级次相同。
多边形的边数越多,衍射图案越复杂。
在实际应用中,可以根据需要选择不同形状的多边形衍射孔,以获得所需的衍射效果。
南京航空航天大学高等光学期末报告题目:基于Matlab的单缝菲涅尔衍射实验仿真学院专业姓名学号2014 年12 月30 日基于Matlab的菲涅尔衍射仿真摘要光学试验中衍射实验是非常重要的实验. 光的衍射是指光在传播过程中遇到障碍物时能够绕过障碍物的边缘前进的现象, 光的衍射现象为光的波动说提供了有力的证据. 衍射系统一般有光源、衍射屏和接受屏组成, 按照它们相互距离的大小可将衍射分为两大类, 一类是衍射屏与光源和接受屏的距离都是无穷远时的衍射, 称为夫琅禾费衍射, 一类是衍射屏与光源或接受屏的距离为有限远时的衍射称为菲涅尔衍射。
本文用Matlab软件主要针对单缝菲涅尔衍射现象建立了数学模型,对衍射光强分布进行了编程运算,对衍射实验进行了仿真。
关键字:Matlab;单缝菲涅尔衍射;仿真;光学实验AbstractOptical 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 single slit Fresnel diffraction, the diffraction intensity distribution of the programming operation, the diffraction experiment is simulated.Key word: matlab;single slit Fresnel diffraction; simulation; optical experiment1.菲涅尔衍射的基本原理 1.1菲涅尔衍射的实验原理光在传播的过程中经过障碍物,如不透明物体的边缘、小孔、狭缝等时,一部分光会传播到几何阴影中去,产生衍射现象。
圆孔衍射与像分辨本领的matlab仿真分析根据现代光学原理,圆孔衍射是一种典型的光学现象,它可以发生在空气中或其他介质中。
它由蒙特卡罗仿真计算机软件-Matlab可以有效地模拟并分析。
本文旨在介绍Matlab在圆孔衍射中的应用,并阐述像分辨本领。
一、Matlab仿真圆孔衍射1、仿真圆孔衍射的实验条件圆孔衍射的实验是以光折射实验室中的圆孔作为衍射源,光源是经过圆孔衍射实验室中的一台光源控制器电路控制的LED发光二极管。
由于衍射源的清晰的圆孔只有微小的孔径,所以这里用的是计算机软件Matlab来仿真圆孔衍射运动。
2、Matlab仿真圆孔衍射的方法Matlab是一种高级编程语言,是一种非常实用的数值计算工具,可以实现大规模数值模拟,它可以实现对圆孔衍射的仿真和分析。
首先,设置仿真参数,计算实验条件下的光强特性,然后再进行实验模拟,最后通过分析衍射模拟结果得到结论。
二、像分辨本领1、定义像分辨本领像分辨本领是指光学系统设计中所求出的一种最小像素大小,可以正确分辨一副图像中的两个相邻物体或者两个相邻像素。
大体上,它是用来衡量系统能够分辨其中物体的能力,而它也是一个重要的光学系统参数。
2、像分辨本领的计算方法像分辨本领是由光学系统中最小的可分辨模式所确定的,它的计算公式为:MTF = f/A,其中MTF是图像分辨本领,F表示物体相邻元素的强度差,A表示相邻元素的位置差。
像分辨本领的计算实际上是求解两个相邻物体的位置差和强度差百分比之商,即系统的分辨率。
三、总结本文分析了Matlab在圆孔衍射中的仿真和像分辨本领的应用,实验表明,使用Matlab对圆孔衍射及像分辨本领的仿真和分析模拟效果良好。
通过Matlab,我们可以有效地模拟和分析圆孔衍射,并用它来测量像分辨本领,从而帮助我们研究和设计光学系统。
《MATLAB语言》课程论文MATLAB模拟演示小孔衍射姓名:***学号:***********专业:通信工程班级:10级通信工程指导老师:***学院:物理电气信息学院完成日期:2011-12-10MATLAB模拟演示小孔衍射(王照义 12010245259 2010级通信班)[摘要]以单色标量波衍射理论为基础,研究了均匀平面波从不同角度入射小孔阵列的衍射特性。
运用单孔衍射理论,同时考虑相邻小孔间衍射光强的相互影响,建立了小孔阵列衍射的理论模型和光强分布的数值积分式,小孔为硬边小孔。
利用Matlab对500 nm波长的平面波入射微小方孔阵列衍射图样进行了计算机仿真,得到了不同几何参量下平面波从不同角度入射时的衍射图样的一维和二维光强分布图。
[关键字] 小孔衍射 MATLAB一、光的衍射种类包括:单缝衍射、圆孔衍射、圆板衍射及泊松亮斑光在传播过程中,遇到障碍物或小孔(窄缝)时,它有离开直线路径绕道障碍物阴影里去的现象。
这种现象叫光的衍射。
衍射时产生的明暗条纹或光环,叫衍射图样。
产生衍射的条件是:由于光的波长很短,只有十分之几微米,通常物体都比它大得多,但是当光射向一个针孔、一条狭缝、一根细丝时,可以清楚地看到光的衍射。
用单色光照射时效果好一些,如果用复色光,则看到的衍射图案是彩色的。
1.衍射现象光绕过障碍物偏离直线传播路径而进入阴影区里的现象,叫光的衍射。
光的衍射和光的干涉一样证明了光具有波动性。
2.光产生明显衍射的条件小孔或障碍物的尺寸比光波的波长小,或者跟波长差不多时,光才能发生明显的衍射现象。
由于可见光波长范围为4×10-7m至7.7×10-7m之间,所以日常生活中很少见到明显的光的衍射现象。
任何障碍物都可以使光发生衍射现象,但发生明显衍射现象的条件是“苛刻”的。
当障碍物的尺寸远大于光波的波长时,光可看成沿直线传播。
注意,光的直线传播只是一种近似的规律,当光的波长比孔或障碍物小得多时,光可看成沿直线传播;在孔或障碍物可以跟波长相比,甚至比波长还要小时,衍射就十分明显。
3.衍射的种类:(1)狭缝衍射让激光发出的单色光照射到狭缝上,当狭缝由很宽逐渐减小,在光屏上出现的现象怎样?当狭缝很宽时,缝的宽度远远大于光的波长,衍射现象极不明显,光沿直线传播,在屏上产生一条跟缝宽度相当的亮线;但当缝的宽度调到很窄,可以跟光波相比拟时,光通过缝后就明显偏离了直线传播方向,照射到屏上相当宽的地方,并且出现了明暗相间的衍射条纹,纹缝越小,衍射范围越大,衍射条纹越宽,。
但亮度越来越暗。
(2)小孔衍射当孔半径较大时,光沿直线传播,在屏上得到一个按直线传播计算出来一样大小的亮光圆斑;减小孔的半径,屏上将出现按直线传播计算出来的倒立的光源的像,即小孔成像;继续减小孔的半径,屏上将出现明暗相间的圆形衍射光环。
二、常见的几种衍射现象(一)圆孔衍射将一束光投射在一个小圆孔上,并在距孔l~2m 处放置一块毛玻璃屏,可观察到小圆孔的衍射花样。
现用上节所得的结论,研究从点光源所发出的光通过圆孔时的衍射现象。
现在先计算光到达垂直于圆孔面的对称轴上一点P 时的振幅。
图1P 点与波面上极点B 0之间的距离为r 0。
首先考虑通过圆孔部分波面的面积所含有的完整的菲涅耳带的数目。
这个整数k 与圆孔的半径、光的波长λ以及圆孔的位置(即R 和r 0)有关。
(1) (2)如果用平行光照射圆孔, ,则 r k x0λρ= (3) 如果不用光阑,即相当于圆孔的半径为无限大,也就是整个波面完全不被遮蔽,则由最末一个带所发次波在到达P 点时的振幅ak 为无限小,此时P 点的合振幅为 (4)此式表明,没有遮蔽的整个波面对P 点的作用等于第一个波带在该点的作用的一半。
因为波带的面积非常小,例如的绿光时,若R 、r 0均为1m ,第一个波带的面积约为即半径约为1/2 mm。
所以,没有遮藏的整个波面的光能的传播,几乎可以看作沿OP直线进行,这也是一般把光视作直线传播的原因。
P点离开光源愈远,a愈小光强愈弱。
在这种情况下1屏沿着对称轴线前进时,不发生上述某些点较强某些点较弱的现象。
如果圆孔具有一定大小的半径,观察点P的位置仅使波面上露出第一个带,则(5)与不用光阑时比较,振幅为完全不遮藏时的二倍,光强则增加到四倍。
所以光在通过圆孔以后到达任一点时的光强,不能够单独由光源到该点的距离来决定,还取决于圆孔的位置及大小。
仅当圆孔足够大、使小到可以略去不计时,才和光的直线传播概念所推得的结果一致。
这些讨论都假定O是理想的点光源。
但是实际光源都有一定的大小。
光源的每一点各自产生它自己的衍射花样,它们是不相干的。
光源的线度应小到使光源上某些点所产生的亮条纹不致落到另外一些点所产生的暗条纹上去。
否则由于不图2相干叠加,衍射花样就会完全模糊了。
通常情况下不容易观察到衍射花样正是由于这个缘故。
(二)圆屏衍射我们讨论一下点光源发出的光通过圆屏边缘时的衍射现象。
O为点光源,光路上有一不透明的圆屏。
现在先讨论P点的振幅。
设圆屏遮蔽了开始的k个带。
于是从第k+1个带开始,所有其余的带所发的次波都能到达P点。
把所有这些带的次波叠加起来,可得P点的合振幅为(6)即不论圆屏的大小和位置怎样,圆屏几何影子的中心永远有光。
不过圆屏的面积愈小时被遮蔽的带的数目k就愈小,因而愈大,到达P点的光愈强。
变更圆屏和光源之间或圆屏和光屏之间的距离时,k也将因之改变,因而也将影响P点的光强。
如果圆屏足够小,只遮住中心带的一小部分,则光看起来可完全绕过它,除了圆屏影子中心有亮点外没有其它影子。
这个初看起来似乎是荒谬的结论,是泊松于1818年在巴黎科学院研究菲涅耳的论文时把它当作菲涅耳论点谬误的证据提出来的。
但阿喇果做了相应的实验,证实了菲涅耳的理论的正确性。
三、小孔衍射的原理机械波的衍射实验往往用现成的仪器,通过机械振动产生水波纹来实现,我们能很清楚的观察到衍射图像,对于光的衍射实验可以通过用激光射到一个小球,从而产生衍射图像,但是小孔衍射确没法在普通的高中物理实验室中做出。
但是随着高中多媒体化的普及,教室里面多媒体的应用日益增加,我们完全可以通过数学软件来模拟小孔衍射图像来给学生演示,直观而又简单。
衍射的实质就是当光波在传播过程中遇到障碍物或者透过屏幕上的小孔时,会导致偏离原来入射方向的出射光波。
根据惠更斯-菲涅尔原理,波阵面上的每一点可以认为是产生球面子波的一个次级扰动中心,而以后任何时刻的波阵面则可以看作是这些子波的包络,假定这些次级子波互相干涉,从而产生衍射效应。
通俗的说,光的传播是以波的形式传播的,下一时刻的波阵面就是前一时刻波阵面上无数点发出的球面波的叠加。
当光波受到扰动(比如尺寸与波长可比的小孔或头发丝等),球面子波发生干涉,从而产生衍射。
衍射的实质是干涉。
而小孔成像中的小孔的尺寸应该远大于波长。
实际上即使如此,在小孔边缘附近也存在衍射效应。
之所以小孔后面会成像,是因为小孔将物体向空间各方向发出的光截取了其中一部分,按照光沿直线传播这一简单的模型,在小孔后白屏上产生物体的像。
产生衍射时,光线不是沿直线传播的。
几何光学里,我们认为光是沿直线传播的。
波动理论中认为光是以波动的形式传播的。
四、用MATLAB语言演示小孔衍射在光学中衍射理论的基础是惠更斯原理。
这原理假设开始的光波面上每一点可以看作次级光源,它们发射出子波,这些子波叠加后得到向前传播的光波。
图3小孔衍射示意图可以设屏幕上有一小孔,光波从左边入射,我们要计算通过小孔后在屏幕右边空间各点上光波的强度。
这种普遍的解法是很复杂的,实际所用的衍射理论都是一些近似解法。
根据这个计算方法,采用波长为500nm蓝绿光做为衍射光源,编写MATLAB程序,即可得到图像。
MATLAB程序如下:clearlamba=500e-9; %波长a=1e-3;D=1;ym=3*lamba*D/a; %屏幕上y的范围n=51; %屏幕上的点数ys=linspace(-ym,ym,n);n=51; %屏幕上的点数yp=linspace(0,a,n);for i=1:nsinphi=ys(i)/D;alpha=pi*yp*sinphi/lamba;sumcos=sum(cos(alpha));sumsin=sum(sin(alpha));B(i,:)=(sumcos^2+sumsin^2)/n^2;endN=256; %确定灰度的等级Br=(B/max(B))*N;subplot(1,2,1)image(ym,ys,Br);colormap(hot(N)); %色调处理subplot(1,2,2)plot(B,ys,'k');运行结果如图4所示。
图4衍射条纹五、[结论]通过图像很直观观察到波的小孔衍射的特征,中间的呈现白光,是各种颜色的光的叠加,两边颜色分别呈现黄色、红色,是因为黄色光和红色光波长较大,不能和别的窄波长的光叠加,只能单一呈现。
图像是实际计算出来的数值图像,更加有数学依据。
六、[课程体会]经过一学期的MATLAB语言课程的学习,我已经初步熟练的应用MATLAB语言,在学习的过程中,我逐步的发现用MATLAB 处理实验数据,过程直观方便,简单的命令就可以完成繁琐的计算,同时也激发了我的学习兴趣,让我摆脱了枯燥无味的重复计算。
由于MATLAB具有优秀的数字计算能力、准确科学的数字图形可视化能力以及直观简洁的程序环境,因此可以在大部分课程的实验教学上广泛推广。
本次实验设计只是MATLAB语言应用的一小部分,在以后的学习中我会更多的应用MATLAB语言,它的简便、直观和强大的功能会让我的学习更加的轻松。
[参考文献][1] 刘卫国.MATLAB程序设计与应用(第二版)[M].北京:高等教育出版社,2006.[2] 马文蔚.物理学(上册)(第四版)[M],北京:高等教育出版社,1999.。