学号:20163152616姓名:彭宏辉专业年级:光电16MATLAB光学模拟仿真一、实训目的1、熟悉matlab绘图和仿真功能2、复习物理光学等相关知识3、掌握运用matlab软件的仿真等功能与专业知识相结合二、实训内容(一)MATLAB基础训练及光波在介质分界面的反射和折射1、相关原理当一个单色平面波射到两种不同介质的分界面时,将分为两个波,一个折射波一个反射波。从电磁场的边值关系可以求出它们的传播方向和入射波的振幅关系相位关系。2、实训任务已知界面两侧的折射率n2、n1和入射角,绘出在n1n2(光由光疏介质射向光密介质)和n1n2(光由光密介质射向光疏介质)两种情况下,反射系数、透射系数随入射角的变化曲线。程序如下:clear;%清空disp('请输入介质折射率n1和n2');%在显示括号内语句n1=input('n1=');%接受键盘任意输入合适的折射率n1n2=input('n2=');%接受键盘任意输入合适的折射率n2theta=0:0.1:90;%入射角范围范围0~90,步距0.1a=theta*pi/180;%角度化为弧度rp=(n2*cos(a)-n1*sqrt(1-(n1/n2*sin(a)).^2))./(n2*cos(a)+n1*sqrt(1-(n1/n2*sin(a)).^2));%p分量振幅反射率rs=(n1*cos(a)-n2*sqrt(1-(n1/n2*sin(a)).^2))./(n1*cos(a)+n2*sqrt(1-(n1/n2*sin(a)).^2));%s分量振幅反射率tp=2*n1*cos(a)./(n2*cos(a)+n1*sqrt(1-(n1/n2*sin(a)).^2));%p分量振幅透射率ts=2*n1*cos(a)./(n1*cos(a)+n2*sqrt(1-(n1/n2*sin(a)).^2));%s分量振幅透射率figure(1);%创建一个窗口subplot(1,2,1);%作图rp,rs,|rp|,|rs|随入射角的变化曲线plot(theta,rp,'-',theta,rs,'--',theta,abs(rp),':',theta,abs(rs),'-.','LineWidth',2);%用学号:20163152616姓名:彭宏辉专业年级:光电16‘-’、‘--’,‘:’、‘-.’符号标注对应曲线legend('rp','rs','|rp|','|rs|');%标注曲线图例xlabel('入射角/theta_i');%命名x轴ylabel('振幅');%命名y轴title(['n_1=',num2str(n1),',n2=',num2str(n2),'时反射系数随入射角的变化曲线']);%命名图像axis([090-11]);%设定作图区间gridon;%添加网格subplot(1,2,2);%tp,ts,|tp|,|ts|随入射角的变化曲线plot(theta,tp,'-',theta,ts,'--',theta,abs(tp),':',theta,abs(ts),'-','LineWidth',2);%用‘-’、‘--’,‘:’、‘-.’符号标注对应曲线legend('tp','ts','|tp|','|ts|');%标注曲线图例xlabel('入射角/theta_i');%命名x轴ylabel('振幅');%命名y轴title(['n_1=',num2str(n1),',n2=',num2str(n2),'时透射系数随入射角的变化曲线']);%命名图像ifn1n2%如果此时从光疏到光密axis([09001]);%设定作图区间else%否则axis([09003.5]);%设定作图区间end%结束gridon;%添加网格学号:20163152616姓名:彭宏辉专业年级:光电16(二)光波的叠加1、相关原理光波在空间某一区域相遇时,发生光波叠加现象。波的叠加服从叠加原理,波在相遇点产生的合振动是各个波单独产生的振动的矢量和。2、实训任务①两列单色平面波的模拟。程序如下:w1=50;%波1频率w2=60;%波2频率k1=5;%波1波数k2=4;%波2波数t=0.1:0.2:1.3;%对时间进行等间隔取点a=1;%波动振幅x=0:0.001:5;%对传播方向x轴进行等间隔取点A2=a*cos(k2*x-w2*t(end));%A2波动函数A1=a*cos(k1*x-w1*t(end));%A1波动函数plot(x,A1,'-',x,A2,':')%绘制两个波形图set(gcf,'color',[111]);%添加颜色对比度set(gca,'YTick',[-1:0.5:1]);%标记Y轴坐标刻度set(gca,'XTicK',[0:1:5]);%标记X轴坐标刻度学号:20163152616姓名:彭宏辉专业年级:光电16xlabel('变量X')%添加x轴说明ylabel('振幅')%添加y轴说明title('两列单色平面波的模拟')%添加标题legend('光波1','光波2')%添加图例光波1和光波2②绘制合成波光强曲线。程序如下:w1=50,w2=60,k=0,k1=5,k2=4,a=1;%两列波的参数x=0:0.001:30;%传播方向X轴进行等间隔取点t=0.1:0.2:1.3%对时间进行等间隔取点k=k+1;%累加A=2*a*cos((k1-k2)/2*x-(w1-w2)/2*t(end));%波动函数I=A.*A;%合成光强plot(x,I);%绘制图形set(gca,'YTick',[0:1:4])%添加Y轴坐标刻度set(gca,'XTick',[0:5:30])%添加X轴做坐标刻度xlabel('变量X')%添加X轴说明ylabel('振幅变化')%添加Y轴说明title('合成波光强曲线')%添加标题学号:20163152616姓名:彭宏辉专业年级:光电16③两列单色平面波合成的动态仿真。程序如下:w1=50,w2=60,k1=5,k2=4,a=1;%两列波的参数x=0:0.001:30;%传播方向X轴进行等间隔取点k=0;%赋初值m2=moviein(length(0.1:0.2:1.3));%形成动态函数fort=0.1:0.2:1.3%对时间进行等间隔取点k=k+1;%累加A=2*a*cos((k1-k2)/2*x-(w1-w2)/2*t);%波动函数v=a*cos(k1*x-w1*t)+a*cos(k2*x-w2*t);%波动函数plot(x,v,'k-',x,A,'g:',x,-A,'b-.');%绘制图形axis([030-22]);%设置坐标轴set(gcf,'color',[111])%设置颜色对比度set(gca,'YTick',[-2:1:2])%添加Y轴坐标刻度set(gca,'XTick',[0:5:30])%添加X轴做坐标刻度xlabel('变量X')%添加X轴说明ylabel('振幅变化')%添加Y轴说明title('光学拍')%添加标题legend('合成波振幅','包络线1','包络线2')%添加图例m2(:,k)=getframe;%获取坐标为界的图像end%循环结束movie(m2,3)%绘制动态函数学号:20163152616姓名:彭宏辉专业年级:光电16(三)光波的干涉1、相关原理满足一定条件的两列相干波相遇叠加,在叠加区域某些点的振动始终加强,某些点的振动始终减弱,即在干涉区域内振动强度有稳定的空间分布。2、实训任务①杨氏双缝干涉的模拟。程序如下:clearalllam=500e-9;%设置输入波长a=2e-3;%设置屏幕到双缝平面距离D=1;%设置双缝距离ym=5*lam*D/a;%设定光屏范围xs=ym;%赋值n=101;ys=linspace(-ym,ym,n);%把光屏Y方向分成101点fori=1:n%开始循环学号:20163152616姓名:彭宏辉专业年级:光电16r1=sqrt((ys(i)-a/2).^2+D^2);%两个相干光源到到屏幕上任意点P的距离r2=sqrt((ys(i)+a/2)^2+D^2);%两个相干光源到到屏幕上任意点P的距离phi=2*pi*(r2-r1)/lam;%相位差B(i,:)=4*cos(phi/2).^2;%p点的光强end%循环结束N=255%确定灰度级为255级Br=(B/4.0)*N;%最大光强对应的灰度级subplot(1,2,1);%将一行二列的图从左到右从上到下的第一个位置image(xs,ys,Br);%画干涉条纹colormap(gray(N));%输出一个灰色的曲线图subplot(1,2,2);%将一行二列的图从左到右从上到下的第二个位置plot(B,ys);%画光强变化曲线②模拟非定域干涉下点光源的干涉条纹。程序如下:xmax=40;ymax=40;%干涉条纹范围设定Lambad=632.8e-006;%光波长的选择,此处用氦氖激光器f=190;%扩束镜的焦距n=1.0%介质折射率,空气为1N=800;%精度或分辨率,决定x,y的数据量学号:20163152616姓名:彭宏辉专业年级:光电16x=linspace(-xmax,xmax,N);%产生-xmax,xmax之间的N点行线性的矢量y=linspace(-ymax,ymax,N);%产生-xmax,xmax之间的N点行线性的矢量fork=0:15%模拟增加光程差次数d=0.39-0.00005*k;%模拟增加光程差fori=1:N%循环体forj=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)))))/Lambad).^2;end%计算不同光程差条件下的条纹位置endfigure(gcf);%建立N1=255;%设置分辨率或精度Br=2.5*B*N1;%调整最终的条纹位置image(x,y,Br);%显示仿真结果colormap(gray(N1));%灰度图显示set(gca,'XTick',[]);%设置x坐标set(gca,'YTick',[]);%设置y坐标axisequal%坐标轴设置drawnow%立即绘图pause%保留图像end学号:20163152616姓名:彭宏辉专业年级:光电16③模拟定域干涉下的等倾干涉条纹。程序如下:d=2;%设置透镜厚度Lambad=632.8e-006;%光波长的选择,此处用氦氖激光器theta=0.15;%设置初始的入射倾角rmax=d*tan(theta/2)%设置标度N=800;%精度或分辨率,决定x,y的数据量x=linspace(-rmax,rmax,N);%设置x轴范围和标度y=linspace(-rmax,rmax,N);%设置y轴范围和标度fork=0:15%模拟增加倾角次数theta=theta-0.01*k%倾角减小rmax=d*tan(theta/2)%每条等倾条纹的新标度fori=1:N%循环体forj=1:N%循环体x(i)=(i-2)*2*rmax/(N-1)-rmax;%等倾条纹的x坐标y(j)=(j-2)*2*rmax/(N-1)-rmax;%等倾条纹的y坐标r(i,j)=sqrt(x(i)^2+y(j)^2);%等倾条纹的半径delta(i,j)=2*d/sqrt(1+r(i,j)^2/d^2);%中间参量角计算Phi(i,j)=2*pi*delta(i,j)/Lambad;%计算参量PhiB(i,j)=4*cos(Phi(i,j)/2)^2;%计算不同倾角条件下的条纹位置endendfigure(gcf);%创建图像显示窗口N1=255;%设置分辨率或精度Br=2.5*B*N1;%调整最终的条纹位置image(x,y,Br);%显示仿真结果colormap(gray(N1));%灰度图显示set(gca,'XTick',[]);%设置x坐标se