www.gusucode.com > 基于MATLAB仿真白光光栅衍射实验模拟 > code2/基于MATLAB仿真白光光栅衍射实验模拟/main.m
% 程序1,基于MATLAB仿真白光光栅衍射实验程序 clear;clc; % 设置固定参数 lamda=[600,610,570,550,460,440,410]*1e-9; %七色光的波长,单位米 RGB=[1,0,0;1,0.5,0;1,1,0;0,1,0;0,0,1;0.67,0,1]; %七色光的RGB值 d=4e-5; %光栅常数 % 设置可调参数 b=8e-6;N=18; %透光缝宽及光栅单元数 Bright=80; %亮度调节系数 % 设置仿真光屏参数 Irgb=zeros(150,1048,3); %仿真光屏矩阵(仿真结果RGB值图像矩阵,初值置零) Iw=zeros(150,1048,3); %用于记录各色光衍射结果的RGB值矩阵(初值置零) % 计算白光光栅衍射的光强及对应的RGB值矩阵数据 %计算各色光光栅衍射光强分布 for k=1:7 theta=(-0.015*pi:0.00001:0.015*pi); %衍射角度的变化范围 phi=2*pi*d*sin(theta)/lamda(k); alpha=pi*b*sin(theta)/lamda(k); Idf=(sinc(alpha)).^2; %单缝衍射的相对光强 Idgs=(sin(N*phi/2)./sin(phi/2)).^2; %多光束干涉的相对光强 I=Idf.*Idgs; %光栅衍射的相对光强 % 计算与各色光衍射光强对应的RGB值矩阵数据 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 % 计算白光光栅衍射RGB值图像矩阵数据 Irgb=Irgb+Iw; %把各色光衍射的RGB值矩阵计入仿真结果RGB值图像矩阵中 Iw=[]; end % 显示白光光栅衍射实验仿真结果 Br=I/max(max(max(Irgb))); %调整Irgb矩阵元素的最大值为1的系数 II=Irgb*Br*Bright; %调节仿真图像亮度 imshow(II); %显示仿真结果 % 若可调参设置为:光栅单元数、透光缝宽及亮度调节系数,运行程序1,即可得出基于MATLAB仿真白光光栅衍射实验结果 % 若可调参设置为:N=2,b=8*1e-16m及Bright=1,运行程序1,即可得出基于MATLAB仿真白光双光束干涉实验结果