Demo entry 6683469

fghjjhl

   

Submitted by anonymous on Dec 13, 2017 at 05:36
Language: Matlab. Code size: 1.2 kB.

clear
clf
lamda=[660 610 570 550 460 440 410]*1e-9; %模拟七种颜色所选择的波长,单位(m)。
RGB=[1,0,0;1,0.5,0;1,1,0;0,1,0;0,1,1;0,0,1;0.67,0,1]; %设置所选七色光的RGB值。
d=8e-5; %设置光栅常数,即缝与缝之间的距离。当试验为单缝衍射时,此参数无影响。当试验为双缝干涉时,此参数即双缝间距,当试验为光栅衍射时,(b+d)即为为光栅常数。单位(m)。
b=2e-5; %设置缝宽。单位(m)。也可将b与d设置为lamda的倍数。
N=160; %设置透光缝的数量,N=1即为单缝衍射,N=2即为双缝干涉,N>=3即为多缝干涉或光栅衍射。
Bright=80;  %设置亮度调节系数,以获得合适的仿真图。
Irgb=zeros(150,601,3); % 创建仿真光屏矩阵。
Iw=zeros(150,601,3); % 创建用于记录各色光衍射结果的RGB值的矩阵。
%下列函数用于计算衍射在各处的光强与多个透光缝进行的叠加。并对色光的RGB值进行叠加。
for k=1:7
theta=(-0.015*pi+.03*pi/601:.03*pi/601:0.015*pi); % 设置衍射角度的定义域。
phi=pi*d*sin(theta)/lamda(k);% 定义衍射角。
alpha=pi*b*sin(theta)/lamda(k);
xl=(-300:1:300); % 设置光强图像的横坐标。;
Idf=(sinc(alpha)).^2; % 计算单缝衍射的光强。
Igs=(sin(N*phi)./sin(phi)).^2; % 计算多光束干涉叠加的光强。
I=Idf.*Igs; % 计算光栅衍射的相对光强。
for i=1:150
Iw(i,:,1)=I*RGB(k,1);  % 把红基色代码计入Iw矩阵红维度。
Iw(i,:,2)=I*RGB(k,2);  % 把绿基色代码计入Iw矩阵绿维度。
Iw(i,:,3)=I*RGB(k,3);  % 把蓝基色代码计入Iw矩阵蓝维度。
end
Irgb=Irgb+Iw;  % 把各色光衍射的RGB值矩阵计入仿真结果RGB值图形矩阵中。
Iw=[];
end
Br=1/max(max(max(Irgb)));  % 调整Irgb矩阵元素的最大值为1的系数。
II=Irgb*Br*Bright; % 调节仿真图像亮度。
subplot(2,1,1) % 设定光强函数的显示位置。
plot(xl,I) % 画出光强相对光屏位置的函数。
subplot(2,1,2) % 设定仿真图的显示位置。
imshow(II) % 画出仿真图。

This snippet took 0.01 seconds to highlight.

Back to the Entry List or Home.

Delete this entry (admin only).