matlab绘制双缝、等厚劈尖干涉、牛顿环、迈克尔逊等倾干涉图样
- 1.matlab绘制双缝干涉图样
- 2.matlab绘制等厚劈尖干涉图样
- 3.matlab绘制牛顿环干涉图样
- 4.matlab绘制迈克尔逊干涉仪干涉图样
1.matlab绘制双缝干涉图样
方法1:
clc
close all
clear all
%% %%代码分块运行
lambda = 500e-9; %%波长500nm
d = 2e-3; %%双缝间距2mm
D=1; %%双缝距离观察屏之间的距离1m
ym=5*lambda*D/d; %%表示最宽的位置为5个亮纹处
xs=ym;
n=101;
ys=linspace(-ym,ym,n); %%屏面线性间距向量
for i=1:n
r1=sqrt((ys(i)-d/2).^2+D^2); %%光程1
r2=sqrt((ys(i)+d/2).^2+D^2); %%光程2
phi=2*pi*(r2-r1)./lambda; %%相位差
B(i,:)=4*cos(phi/2).^2; %%计算光强,假设初始光强为1,不必加sum
end
N=255;
Br=B*55; %%将光强乘以一个值,以增强图像的区分度,这个值不能太大亦不能太小,可以试一试
subplot(1,2,1); %%一行两列中的第一幅图
image(xs,ys,Br); %%从数组显示图像
colormap(gray(N)); %%使图像以灰度图像显示
subplot(1,2,2); %%一行两列中的第二幅图
plot(B,ys);
title('双缝干涉图样')
结果:
方法2:
双缝干涉的动态图样:
clear
avi_object = VideoWriter('interference');
avi_object.FrameRate = 20;
open(avi_object);
for t = 0:0.01:1
%生成干涉后的光强分布值Z
x = linspace(-3*pi,5*pi,400);
y = linspace(-4*pi,4*pi,400);
[X,Y] = meshgrid(x,y);
a=1;%波长
Z = zeros(400);
for j = 1:150
for i = 1:400
Z(i,j) = cos(-2*pi*t+2*pi*sqrt((X(i,j)+pi)^2+Y(i,j)^2)/a)^2;
end
end
for j = 151:400
for i = 1:400
Z(i,j) = (cos(-2*pi*t+2*pi*sqrt(X(i,j)^2+(Y(i,j)-pi)^2)/a)+cos(-2*pi*t+2*pi*sqrt(X(i,j)^2+(Y(i,j)+pi)^2)/a))^2;
end
end
pcolor(X,Y,Z);
shading interp;%颜色渐变效果
%colorbar;
colormap(hot);%doc colormap可以改色卡
%画挡板
A = [0 0];
B1 = [0 pi-0.1];
B2 = [pi+0.1 4*pi];
B3 = [0 -pi+0.1];
B4 = [-pi-0.1 -4*pi];
line(A,B1,'Color','k','LineWidth',5);
line(A,B2,'Color','k','LineWidth',5);
line(A,B3,'Color','k','LineWidth',5);
line(A,B4,'Color','k','LineWidth',5);
M = getframe;
%M.cdata = imresize(M.cdata,[1026 1302]);
writeVideo(avi_object,M);
end
close(avi_object);
结果:
2.matlab绘制等厚劈尖干涉图样
置一楔角θ微小的劈尖水平放置于空气中,令单色光沿垂直方向照射劈尖,形成干涉条纹。光程差δ=2nh+λ/2,n>1为劈尖介质折射率设为常量,劈尖厚度h=xtanθ为一变量,λ为入射光波长,λ/2是因为半波损失——劈尖周围的空气介质折射率小于劈尖。 相位差φ=2π·δ/λ,光强分布I=4cos²(φ/2) 。
clear;
lambda=632.8e-9; %入射光波长
theta=0.1; %劈尖楔角
n=1.33; %介质折射率
N=900; %N表示均匀取样个数,可以改变
x=linspace(0,600,N); %x为劈尖长度,单位mm
y=linspace(0,300,N/2); %y为劈尖宽度,单位mm
h=x*tan(theta);
Phi=2*n*h./lambda;
I=4*cos(Phi/2).^2;
graylevel=255;
Ir=(I/4)*graylevel;
subplot(2,1,1),image(x,y,Ir);
colormap(gray(graylevel)),
xlabel('劈尖长度/mm'),ylabel('劈尖宽度/mm'),title('条纹图')
subplot(2,1,2),plot(x,I),title('劈尖长度方向的光强分布')
结果:
3.matlab绘制牛顿环干涉图样
方法1:
clear all
lambda=600e-9; %入射光波长
R=10; %牛顿环曲率
rm=1e-2; %干涉条纹区域
x=0:0.0001:rm;
y=rm:-0.0001:0;
[X,Y]=meshgrid(x,y);
r2=x.^2+Y.^2;
phi=2*pi*(r2/R+lambda/2)/lambda; %相位差
I=4*cos(phi./2).^2; %第一象限干涉光强
N=255; %灰度等级
Ir2=(I/4.0)*N; %最大光强为最大灰度
Ir1=fliplr(Ir2); %矩阵对称操作
Ir3=flipud(Ir1);
Ir4=flipud(Ir2);
Ir=[Ir1 Ir2;Ir3 Ir4]; %构造图像矩阵
figure
image(Ir,'Xdata',[-0.02,0.02],'YData',[0.02,-0.02]); %画干涉条纹
colormap(gray(N));
axis square
title('牛顿环干涉图样')
结果:
如果相位差越大那么干涉条纹越密且中央干涉点越亮。
方法2:
clear,clc,close all;
Lambda = 632.8 * 1e-9; %波长单位转为:m
R = 900 * 1e-3; %透镜的曲率半径单位转为:m
I0 = 1; %入射光的光强
Screen_length = sqrt(10*R*Lambda); %定义干涉仿真范围
[Screen_x,Screen_y] = meshgrid(linspace(-Screen_length,Screen_length,800));
Newton_r = abs(Screen_x + 1i*Screen_y);
I_delta = (Newton_r.^2)*pi/R/Lambda;
I = 2*I0*(sin(I_delta)).^2;
I = I./max(max(I)); %光强分布归一化
I = I*64; %光强归一,扩大显示
image(Screen_x(1,:),Screen_y(:,1),I); %设置x和y的像素,显示数值
colormap hot; %妆点色彩
colorbar;
xlabel('x'),ylabel('y');
title('牛顿环');
结果:
4.matlab绘制迈克尔逊干涉仪干涉图样
程序:
clear all;
xmax=10;ymax=10; %设定屏幕范围
lambda=632.8e-6;f=200; %设定入射光波长
n=1.0;
N=150;
x=linspace(-xmax,xmax,N);
y=linspace(-ymax,ymax,N);
for k=0:15
d=0.39-0.00005*k; %M1和M2'空气膜厚度
for i=1:N
for j=1:N
r(i,j)=sqrt(x(i)*x(i)+y(j)*y(j));
B(i,j)=cos(pi*(2*n*d*cos(asin(n*sin(atan(r(i,j)/f)))))/lambda).^2; %干涉条纹
end
end
figure(gcf);
NClevels=255; %设定灰度
Br=2.5*B*NClevels;
image(x,y,Br); %画干涉图像
colormap(gray(NClevels));
set(gca,'Xtick',[]);
set(gca,'Ytick',[]);
drawnow
pause
end
结果: