MATLAB实现多缝衍射 , 体现不同a,d取值对衍射的影响,查看缺级情况

% duo缝衍射
clear all
clc
lambda=500e-9; %波长
a=input('a='); %缝宽可取0.3e-3,1e-3,2e-3等情况
z=1; %缝到屏之间的距离取1
x1max=3*lambda*z/a; %屏幕范围
Nx=51;
xs=linspace(-x1max,x1max,Nx); %屏幕上的点数
Np=51;
xPoint=linspace(-a/2,a/2,Np); %将单缝分为Np个光源
for i=1:Nx  %对屏幕上x向各点作循环
    SinPhi=xs(i)/z; %角度
    alpha=2*pi.*xPoint*SinPhi/lambda;
    SumCos=sum(cos(alpha));
    SumSin=sum(sin(alpha));
    B(i,:)=(SumCos^2+SumSin^2)/Np^2; %取单缝上NP个光源的振幅都为1,在x,y轴
    %上的分量各位cosα,sinα,合振幅的平方为平方和,也即相对光强
end
N=255;
Br=B/max(B)*N;
subplot(121),image(x1max,xs,Br);
axis([0,0.5,-1.5e-3,1.5e-3]);colormap(gray(N));
subplot(122),plot(B,xs,'*-');
axis([0,1,-1.5e-3,1.5e-3]),grid on

你可能感兴趣的:(MATLAB)