任意孔型菲涅尔衍射matlab仿真
衍射的Matlab 模拟

二、菲涅耳-基尔霍夫衍射公式(确定了C、K()) 基尔霍夫 (Kirchhoff) 从波动方程出发,用场论得出了 比较严格的衍射公式。
A expik l expik r cosn, r cosn, l E P = d i l r 2
菲涅尔假设: 当 = 0 时,K()=Max, p/ 时,K()=0.
(实验证明是不对的) 若S发出的光源振幅为A(单位距离处),整个波面’的贡献
CA expikr ~ E P expikR K d R r
求解此公式主要问题:C、K()没有确切的表达式。
设
l
x sin x , f
a b
m
y sin y f
~ E x, y C 2a 2b exp ik lx1 my1 dx1 dy1
2 2
28
~ E x, y C 2a 2b exp ik lx1 my1 dx1 dy1
2 2
P0 E
17
r z1
2 2 x x1 y y1
2 z1
称为菲涅耳近似。
得到菲涅耳衍射:
e ikz1 ~ E x, y iz1
k ~ 2 2 E x1 , y1 exp i x x1 y y1 2 z1 y y
~ 和E0 abC
则
~ ~ sin sin E x, y E0
子波的复振幅与 cosn, r cosn, l 2 成正比,与波长成反比。 K ( )
1 p i exp[ i ] i 2 表示子波的振动位相超前于入射波90。
12
当光线接近于正入射时
菲涅尔衍射matlab代码

菲涅尔衍射matlab代码一、菲涅尔衍射原理菲涅尔衍射是一种光的衍射现象,指的是当光通过一个具有有限尺寸的孔或障碍物时,光波会在物体后方的屏幕上产生衍射图案。
这种衍射过程可以通过菲涅尔衍射公式来描述。
二、菲涅尔衍射公式菲涅尔衍射公式是描述菲涅尔衍射的数学模型。
在Matlab中,我们可以使用以下代码来计算菲涅尔衍射的光强分布:```matlablambda = 632.8e-9; % 光波长k = 2*pi/lambda; % 波数a = 0.1; % 孔径z = 1; % 与屏幕的距离N = 512; % 采样点数dx = a/N; % 采样间隔x = linspace(-a/2, a/2, N); % 采样点坐标u0 = rect(x/a); % 孔径函数,这里使用矩形函数作为示例U0 = fftshift(fft(u0)); % 傅里叶变换U = exp(1i*k*z)*exp(1i*k*(x.^2)/(2*z)).*U0; % 菲涅尔衍射计算I = abs(U).^2; % 光强分布```三、菲涅尔衍射的应用菲涅尔衍射广泛应用于光学领域。
以下是几个菲涅尔衍射的应用示例:1. 衍射光栅菲涅尔衍射可以用于制作光栅,光栅是一种具有特定周期性结构的光学元件。
光栅的周期性结构可以通过菲涅尔衍射的原理来实现。
光栅广泛应用于光谱仪、激光打印机等领域。
2. 衍射成像菲涅尔衍射也可以用于成像。
通过控制光源和屏幕之间的距离,可以实现对物体的衍射成像。
这种成像方式被广泛应用于显微镜、望远镜等光学仪器中。
3. 衍射光学元件菲涅尔衍射还可以用于制作光学元件,如透镜、光阑等。
通过控制光源和物体之间的距离和形状,可以实现对光线的调控和控制。
四、Matlab代码实例解读以上给出的Matlab代码示例中,首先定义了光波长、波数、孔径、与屏幕的距离等参数。
然后,根据采样点数和采样间隔,生成了采样点的坐标。
接下来,定义了孔径函数,这里使用了矩形函数作为示例。
基于matlab的衍射系统仿真 -

成绩:《工程光学》综合性练习二题目:基于matlab的衍射系统仿真学院精密仪器与光电子工程学院专业测控技术与仪器年级20**级班级**班姓名20**年**月综合练习大作业二一、要求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模拟

实验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。
菲涅耳衍射仿真

屏上 P 点的光场复振幅,������0 ������ 表示无衍射屏时 P 点的光场复振幅,根据惠更斯菲涅耳原理,������1 ������ 和������2 ������ 可表示成对
1
和
2
开孔部分的积分,而两个屏
的开孔部分加起来就相当于屏不存在,因此 ������0 ������ = ������1 ������ + ������2 ������ 该式说明,互补屏在衍射某点产生的复振幅之和等于光波自由传播时在该点 产生的光场复振幅。 2 matlab 仿真程序设计 2.1 菲涅耳衍射的实现 在菲涅耳近似下,P点的光场复振幅可表示为 ������ ������, ������ = ������������ ������1 , ������1 ∗ ℎ(������, ������) 其中
总结与展望
利用所学知识基本完成了菲涅耳衍射的仿真。但在完成课程设计的过程中深 深的感受到自身各方面的不足。还需更为努力。对于该仿真,因为使用了卷积, 当采样数过大时,运算速度会变得很慢。该仿真还有更好的实现方式,是基于傅 里叶变换的,可大大降低时间复杂度,无奈能力,精力有限,就不去实现了。
参考文献
【1】 奥本海姆., Oppenheim A, 刘树棠. 信号与系统[M].西安: 西安交通大学出 版社, 1998.
E3 (������)图样
E3 (������)分布图
E3 ������ 与对应正方形衍射屏中央剖面光强分布对比图 可见巴比涅定理成立。
3.4 夫琅禾费衍射
菲涅耳数F ≪ 1时,衍射图样为夫琅禾费衍射。 选取F=0.1,n=400,p=2
F=0.1时圆孔衍射图样
F=0.1时圆孔衍射光强分布图
圆孔矩孔的菲涅尔衍射模拟(matlab实现)-工程光学

工程光学综合练习-----圆孔、矩孔的菲涅尔衍射模拟圆孔和矩孔的菲涅尔衍射模拟一、原理由惠更斯-菲涅尔原理可知接收屏上的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)图3(r=50mm) 三、矩孔的菲涅尔衍射步骤与上述相同,仅需改变与衍射屏形状对应的矩阵。
这里选择矩孔的长宽相等,分别为15mm,20mm,30mm,其衍射图样及强度分布如图4、5、6图4(a=b=15mm)图5(a=b=20mm)图 6(a=b=30mm)四、MATLAB 程序%所有长度单位为毫米lamda=632.8e-6; k=2*pi/lamda;z=1000000;%先确定衍射屏N=300; %圆屏采样点数a=15;b=15;[m,n]=meshgrid(linspace(-N/2,N/2-1,N));I=rect(m/(2*a)).*rect(n/(2*b));q=exp(j*k*(m.^2+n.^2)/2/z);subplot(2,2,1); %圆孔图像画在2行2列的第一个位置 imagesc(I) %画衍射屏的形状colormap([0 0 0; 1 1 1]) %颜色以黑白区分axis imagetitle('衍射屏形状')L=300;M=300; %取相同点数用于矩阵运算若为圆孔,方框内替换为以下程序 r=12;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; %孔半径范围内透射系数为1[x,y]=meshgrid(linspace(-L/2,L/2,M));h=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))。
写平行光束分别通过圆孔和矩形孔的菲涅尔衍射的matlab代码

写平行光束分别通过圆孔和矩形孔的菲涅尔衍射的matlab代码1. 引言1.1 概述在光学领域中,菲涅尔衍射是一种常见的现象,它描述了当平行光束通过孔洞或物体边缘时所产生的衍射效应。
这个现象在很多应用中都具有重要意义,例如光学仪器的设计、天文学以及激光技术等领域。
理解和研究菲涅尔衍射现象对于深入探究光的波动性质以及相干光的传播具有重要意义。
1.2 文章结构本文将从以下几个方面进行讨论:首先介绍菲涅尔衍射理论中与本文相关的基本概念和原理;其次详细阐述使用MATLAB代码实现菲涅尔衍射的方法和步骤;然后,通过对圆孔和矩形孔两种情况下的菲涅尔衍射结果进行分析和讨论;最后给出文章总结,并提出进一步研究方向。
1.3 目的本文旨在通过编写MATLAB代码来模拟实现平行光束通过圆孔和矩形孔时的菲涅尔衍射现象,并利用结果分析和比较两种情况下的衍射效应。
通过这样的研究,可以加深对菲涅尔衍射原理的理解,并为后续相关研究提供参考和借鉴。
同时,通过MATLAB代码实现,读者也可以根据自己的需求进行扩展和修改,从而进一步探索不同形状孔洞的菲涅尔衍射特性。
2. 菲涅尔衍射理论2.1 光的波动特性菲涅尔衍射是一种描述光波传播和衍射现象的理论。
根据光的波动特性,当光通过一个孔径较小的障碍物时,它会弯曲并发生衍射现象。
在菲涅尔衍射中,平行光束通过圆孔或矩形孔后,在进入屏幕上的观察点处产生干涉图样。
2.2 菲涅尔近似理论菲涅尔近似理论是在进一步简化计算过程中使用的近似方法。
它假设观察点距离光源和障碍物足够远,使得远场近似成立。
2.3 圆孔和矩形孔的描述圆孔和矩形孔是两种常见形状的障碍物,用于描述光线传播时发生的菲涅尔衍射效应。
- 圆孔: 圆孔通常由一个具有确定半径大小的圆形开口组成。
当平行光束通过圆孔时,它会扩散并形成一系列同心环状条纹。
- 矩形孔: 矩形孔是由一个具有确定边长的矩形开口组成。
当平行光束通过矩形孔时,它会扩散并在屏幕上生成一系列矩形衍射图样。
基于Matlab的光学衍射实验仿真

基于Matlab的光学衍射实验仿真()摘要通过Matlab软件编程,实现对矩孔夫琅和费衍射的计算机仿真,结果表明:该方法直观正确的展示了衍射这一光学现象,操作性强,仿真度高,取得了较好的仿真效果。
关键词夫琅和费衍射;Matlab;仿真1引言物理光学是高校物理学专业的必修课,其中,光的衍射既是该门课程的重点内容,也是人们研究的热点。
然而由于光学衍射部分公式繁多,规律抽象,学生对相应的光学图像和物理过程的理解有一定的困难,大大影响了教学效果。
当然,在实际中可以通过加强实验教学来改善教学效果,但是光学实验对仪器设备和人员掌握的技术水平要求都较高,同时实验中物理现象容易受外界因素的影响,这给光学教学带来了较大的困难1【-5】。
随着计算机技术的迅速发展,现代化的教育模式走进了课堂,利用计算机对光学现象进行仿真也成为一种可能。
Matlab是一款集数值分析、符号运算、图形处理、系统仿真等功能于一体的科学与工程计算软件,它具有编程效率高、简单易学、人机交互好、可视化功能、拓展性强等优点[6-8],利用Matlab编程仿真光学现象只需改变程序中的参数,就可以生成不同实验条件下的光学图像,使实验效果更为形象逼真。
在课堂教学中,能快速的验证实验理论,使学生更直观的理解理论知识,接受科学事实。
本文以矩孔夫琅和费衍射为例,介绍了Matlab在光学衍射实验仿真中的应用。
2 衍射基本原理衍射是光波在空间或物质中传播的基本方式。
实际上,光波在传播的过程中,只要光波波面受到某种限制,光波会绕过障碍物偏离直线传播而进入几何阴影,并在屏幕上出现光强分布不均匀的现象,称为光的衍射。
根据障碍物到光源和考察点的距离,把衍射现象分为两类:菲涅尔衍射和夫琅和费衍射。
研究不同孔径在不同实验条件下的光学衍射特性,对现代光学有重要的意义。
如图1所示,衍射规律可用菲涅尔衍射积分表示,其合振幅为[9]:(1)其中,K是孔径平面,E是观察平面,r是衍射孔径平面Q到观察平面P的距离,d是衍射孔径平面O到观察平面P0的距离,cosθ是倾斜因子,k=2π/λ是光波波数,λ是光波波长,x1,y1和x,y分别是孔径平面和观察平面的坐标。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
菲涅尔衍射Matlab仿真
——《高等物理光学》实验报告
学院:物理学院
姓名:廖宝鑫
学号:20
目录
1.菲涅尔衍射衍射原理2
2.实验想法及步骤 (3)
实验思路 (3)
实验步骤 (3)
3.程序源代码: (3)
4.运行结果展示 (4)
5.结论 (6)
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)
根据近轴近似条件
()2221
12
x y f f λ≈-+ (2)
同时利用傅里叶变换关系先对,x y f f 进行积分,得到如下的菲涅尔公式
()()()()()22
0000000exp jkz ,,,exp{j }U x y z dx dy U x y x x y y j z z
πλλ∑⎡⎤=
⋅-+-⎣⎦⎰(3) 令()()()()22
exp 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 。
实验步骤
1) 用ps 绘图软件做出1024*1024的像素点图,在上面绘制各种孔径图形,然后用imread()
读入图像得到二维矩阵,即孔径的透过率函数;
2) 对孔径二维矩阵做傅里叶变换,然后与传递函数相乘,最后对乘积做一次傅里叶逆变换
得到菲涅尔衍射图像。
3.程序源代码:
N=1024; %图像像素点为1024*1024
i=imread(''); %将读入图像用01二值矩阵表示 lev = graythresh(i); u = im2bw(i,lev);
subplot(2,2,1),imshow(u); %绘制孔径图像 title('孔径图像');
lam=600e-6; %入射波长(mm ) k=2*pi/lam; %波矢
z=5000000; %观察屏距离(mm ) [x,y]=meshgrid(linspace(-N/4,N/4,N));
U=fftshift(fft2(u)); %对透过率函数做傅里叶变换 h=exp(1j*k*z)*exp((1j*k*(x.^2+y.^2))/(2*z))/(1j*lam*z); %空间域传递函数 H=fftshift(fft2(h)); %空间频率域传递函数
A=fftshift(ifft2(H.*U)); %通过逆傅里叶变换得到衍射波的振幅
subplot(2,2,2),imshow(log(1+abs(A))); title('衍射图像');
I=abs(A).^2; %光强 subplot(2,2,3),mesh(x,y,I),title('光强分布');
subplot(2,2,4),plot(x(1,:),I(512,:)),title('光强二维分布');
4.运行结果展示
图1 圆孔的菲涅尔衍射
图2 方形孔的菲涅尔衍射
图3 星形孔的菲涅尔衍射
图4 字母B的菲涅尔衍射
图5 光栅菲涅尔衍射
5.结论
采用这一方法理论上可以模拟任意孔型的菲涅尔衍射图像,对于学习菲涅尔衍射有了更直观、形象的认识。