matlab模拟公式,MATLAB模拟衍射利用基尔霍夫衍射公式

本文介绍了一位MATLAB新手如何使用菲涅尔-基尔霍夫衍射公式,通过循环改进和矩阵操作优化对光屏上衍射条纹的计算。作者求助于高手,分享了利用该公式分析方孔衍射过程,特别是如何通过矩阵处理提升运算效率的过程。
摘要由CSDN通过智能技术生成

代码自行改循环,目前需要10分钟左右,夫琅和费区目测不错,屏上点用矩阵写,高手如果觉得写的不好求指教!!!MATLAB我也还是新手,求大神带

利用菲涅尔—基尔霍夫衍射公式对问题进行处理,通过去不同的z值观察近场,菲涅尔区,夫琅和费区的衍射条纹。

菲涅尔—基尔霍夫衍射公式:E P Aexp jk r0 r cos n,r cos n,r0 ds j r0r2

E E P1 Aexp jkr0 0

由于单色平面波垂直照射,由于一般考虑光强的相对值,E P1 A, cos n,r0 1,

所以分析时取A=1,cos cos n,r zr,并对方孔进行微元,将方孔每个点在光屏上衍射的复振幅进行叠加,即计算E , = 2 ,从而得到光屏上的衍射

条纹。对于方孔编程时采用循环的方式,对于光屏则利用矩阵对光屏整体的复振幅,光强等进行分析,加快运算速度。

实现代码

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

for 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; %对不同点在光屏上的复振幅进行累加 end

end

E1=conj(E);

I=E1.*E; %求光强

% pcolor(y,x,I) %作图

% colorbar

Ix= I(1:299,200);%光屏中心水平方向光强分布

plot(x,Ix)

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值