
你对照单缝衍射光强分布公式看这个程序运宽,就简单了,程序中用image函数仿真绘制衍射图样,用plot函数绘制光强;
没有主函数,程序前部分生成仿真单缝衍射所需要的光强分布数据(51个点敏蠢数据),后旁拿亮部分是用image,plot两个函数(MATLAB自己的)仿真图像;
用subplot将图形窗口分成两块,第一块仿真绘制衍射图样,第二块用plot函数绘制光强。
关键语句,我在后面进行了注释!
lam=500e-9
a= 1e-3f=1
xm= 3*lam*f/a
nx= 51
xs=linspace(-xm,xm,nx)%在-xm到xm之间均匀产生51个数据
np=51
xp=linspace(0,a,np)%在0到a之间均匀产生51个数据
%以上语句创建若干变量,与特定公式有关
for i=1:nx
sinphi= xs(i)/f
alpha=2*pi*xp*sinphi/lam
sumcos=sum(cos(alpha))
sumsin=sum(sin(alpha))
B(i,:)=(sumcos^2+sumsin^2)/np^2
end
%以上语句为for循环,计算51个位置的衍射光强,放在B向量中
N=255
Br=(B/max(B))*N%归一化到对应像素灰度
figure(1)
subplot(1,2,1)
image(xm,xs,Br)%仿真衍射图像
colormap(gray(N))
subplot(1,2,2)
plot(B,xs)%仿真单缝衍射光强
lamda=[600 610 570 550 460 440 410]*1e-5%七色光的波长 RGB=[1,0,01,0.5,01,1,00,1,00,1,10,0,10.67,0,1]%七色光的RGB值 h=0.05%距离 pc=zeros(500,500,3)%设置光屏 %可调参数 r=0.54%反射系数 n=1.5%折射率 d=1.7%薄膜厚度 [x,y]=meshgrid(linspace(-0.005,0.005,500))z=x+1i*ytheta=atan(abs(z)/h)%设置入射角 for k=1:7 phi=4*pi*n*d*cos(theta)/lamda(k)%相位差 It=1./(1+4*r^2*sin(phi/2).^2/(1-r^2)^2)%光强盯雹改 p(:,:,1)=It*RGB(k,1)p(:,:,2)=It*RGB(k,2)p(:,:,3)=It*RGB(k,3)%将包含颜色信息的光强用矩阵保存下来 pc=pc+pp=[]end%显示 Br=1/max(max(max(pc)))%调整矩阵元素的最大值为1的系数 pcl=pc*Br%调节 imshow(pcl,[]) %显示仿凯判真结果 title('多光束干涉仿真结果肆清')欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)