作业帮 > 综合 > 作业

求详细解释一下这个matlab源程序,并讲讲原理

来源:学生作业帮 编辑:百度作业网作业帮 分类:综合作业 时间:2024/08/10 07:36:55
求详细解释一下这个matlab源程序,并讲讲原理
把单缝看作是np个分立的相干光源,屏幕上任意一点复振幅为np个光源照射结果的合成,对每个光源,光程差Δ=ypsinΦ,sinΦ=ys/D,光强I=I0(Σcosα)2+(Σsinα)2,其中α=2Δ/λ=πypys/λD
编写程序如下,得到图1
clear
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;
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);
求详细解释一下这个matlab源程序,并讲讲原理
对于光学的东西不是太懂,能做到的只是帮助你更容易地理解程序每一句话,
最好将下面的程序复制粘贴到matlab的编辑窗口中再阅读
clear % 清除matlab工作内存
lam=500e-9; %定义一个常数λ:500乘以10的-9次方
a=1e-3;D=1; %定义常数a:10的-3次方;常数D=1
ym=3*lam*D/a; %定义ym
ny=51; %定义取点个数 ny=51
ys=linspace(-ym,ym,ny); %定义一个数组ys,从-ym到ym之间取ny个点
np=51; %定义取点个数 np=51
yp=linspace(0,a,np); %定义一个数组yp,从0到a之间取np个点
for i=1:ny %循环语句,一共循环51次
sinphi=ys(i)/D; %计算得到 sinΦ,
alpha=2*pi*yp*sinphi/lam; % 计算得到 α=2Δ/λ=πypys/λD(由于yp是一个向量,这里得到的α也是一个向量,包含51个数)
sumcos=sum(cos(alpha)); % 计算得到 Σcosα
sumsin=sum(sin(alpha)); % 计算得到 Σsinα
B(i,:)=(sumcos^2+sumsin^2)/np^2; % 计算得到光强 I=I0(Σcosα)2+(Σsinα)2,并存储为矩阵B的第i行
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); %绘制光强分布曲线