⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 单色光的双缝干涉.m

📁 matlab例程 单色光的双缝干涉.rar
💻 M
字号:
%《MATLAB及其在理工课程中的应用指南》第六章例6-7-1程序
% 单色光的双缝干涉
% 西安电子科技大学出版社出版  陈怀琛编著 1999年10月初版,2004年11月第二版
%
clear; 
Lambda = input('输入光的波长(单位为 nm): (书上取500) ');
Lambda = Lambda * 1e-9;                 % 将nm换 变为 m
d = input('输入两个缝的间距 (单位为 mm): (书上取2) ');
d = d * 0.001;  				        % 将mm 变换为 m
Z = input('输入缝到屏的距离 (单位为 m): (书上取1) ');
yMax = 5*Lambda*Z/d; xs = yMax;         % 设定图案的y,x 向范围
Ny=101;ys = linspace(-yMax,yMax,Ny);    % y方向分成101点
for i=1:Ny			                    % 对屏上全部点进行循环计算
    % 计算第一和第二个光源到屏上各点的距离
    L1 = sqrt((ys(i)-d/2).^2 + Z^2 );
    L2 = sqrt((ys(i)+d/2).^2 + Z^2 );
    Phi = 2*pi*(L2-L1)/Lambda;          % 从距离差计算相位差
    B(i,:) = 4*cos(Phi/2).^2;           % 计算该点光强(设两束光强相同)
    % 若考虑光谱的非单色性,把前两句改为后四句
    %Nl=11; dL=linspace(-0.1,0.1,Nl);	% 设光谱相对宽度正负10%,
    %Lambda1=Lambda*(1+dL');			% 分11根谱线,波长为一个数组
    %Phi1 = 2*pi*(L2-L1)./Lambda1;      % 从距离差计算各波长的相位差
    %B(i,:) = sum(4*cos(Phi1/2).^2)/Nl; % 叠加各波长影响,计算光强
end
% 在屏上画出图象
% clf; figure(gcf);                     % 清图形窗,将它移到前面
NCLevels = 255;                         % 确定用的灰度等级
% 定标:使最大光强(4.0)对应于最大灰度级(白色)
Br = (B/4.0) * NCLevels;
subplot(1,4,1),image(xs,ys,Br);         % 画图象
colormap(gray(NCLevels));               % 用灰度级颜色图
subplot(1,4,2), plot(B(:),ys)           % 画出沿y 向的光强变化曲线




han=1024;le=han;%图象大小
l=2.56*10^(-5);
e=0.9; lamda=6328*10^(-10); k=2*pi/lamda; 
X=linspace(-l,l,han); 
Y=linspace(-l,l,han);
[x,y]=meshgrid(X,Y);
Z=zeros(han,han); Z1=zeros(han,han);
r=2.56*10^(-5);
a=r^2;
for m=1:han
    for n=1:han
        rho=X(m)^2+Y(n)^2;
        if rho>=a;
           Z(m,n)= nan;
           Z1(m,n)= nan;
        else
           Z(m,n)= rho/2/r+ rho^2/8/r^3+ rho^3/16/r^5;
           Z1(m,n)= rho/2/r+ rho^2*e/8/r^3+ rho^3*e^2/16/r^5;
        end
    end
end
dz=(Z1-Z);% double pass
phi=2*pi/lamda*dz;
wb=exp(-i*phi);

% reference light 
alpha=pi/2.000003;
ref=exp(i*k*(x.*cos(alpha)));

h=wb+ref;
figure,imshow(h)

qiu=exp(-i*k*Z);
h1=qiu+ref;
figure,imshow(h1)

fqiu=exp(-i*k*Z).*exp(-i*phi);
h2=fqiu+ref;
figure,imshow(h2)

h3=fqiu+fqiu;
figure,imshow(h3)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -