Matlab数字衍射光学实验讲义(一)
- 格式:pdf
- 大小:481.80 KB
- 文档页数:13
基于Matlab的光学实验仿真一、本文概述随着科技的快速发展,计算机仿真技术已成为科学研究、教学实验以及工程应用等领域中不可或缺的一部分。
在光学实验中,仿真技术能够模拟出真实的光学现象,帮助研究者深入理解光学原理,优化实验设计,提高实验效率。
本文旨在探讨基于Matlab的光学实验仿真方法,分析Matlab在光学实验仿真中的优势和应用,并通过具体案例展示其在光学实验仿真中的实际应用效果。
通过本文的阐述,读者将能够了解Matlab在光学实验仿真中的重要作用,掌握基于Matlab的光学实验仿真方法,从而更好地应用仿真技术服务于光学研究和实验。
二、Matlab基础知识Matlab,全称为Matrix Laboratory,是一款由美国MathWorks公司出品的商业数学软件,主要用于算法开发、数据可视化、数据分析以及数值计算等领域。
Matlab以其强大的矩阵计算能力和丰富的函数库,在光学实验仿真领域具有广泛的应用。
Matlab中的变量无需预先声明,可以直接使用。
变量的命名规则相对简单,以字母开头,后面可以跟字母、数字或下划线。
Matlab支持多种数据类型,包括数值型(整数和浮点数)、字符型、逻辑型、结构体、单元数组和元胞数组等。
Matlab的核心是矩阵运算,它支持多维数组和矩阵的创建和操作。
用户可以使用方括号 [] 来创建数组或矩阵,通过索引访问和修改数组元素。
Matlab还提供了大量用于矩阵运算的函数,如矩阵乘法、矩阵转置、矩阵求逆等。
Matlab具有强大的数据可视化功能,可以绘制各种二维和三维图形。
在光学实验仿真中,常用的图形包括曲线图、散点图、柱状图、表面图和体积图等。
用户可以使用plot、scatter、bar、surf和volume 等函数来创建这些图形。
Matlab支持多种控制流结构,如条件语句(if-else)、循环语句(for、while)和开关语句(switch)。
这些控制流结构可以帮助用户编写复杂的算法和程序。
phi = 0:pi/10:2*pi; % x的范围从0到2πz = exp(i * phi);u = real(z);%取实部v = image(z);%取虚部figure(1);%画图plot(phi,u);%画实部的变化曲线figure(2);plot(phi,v)%画虚部的变化曲线clear;%清除内存close all;%关闭所有窗口x=linspace(0,2*pi,100);%设置横坐标范围及网格y1=sqrt(x);%开根号figure(1);plot(x,y1,'r')%做出y1的曲线,'r'代表图线为红色clear;%清除内存close all;%关闭所有窗口x=linspace(-2*pi,2*pi,100);%100个数横坐标从-2pi到2pi y1=besselj(1,x);%第一类贝塞尔函数,一阶y2=besselj(0,x);%第一类贝塞尔函数,0阶figure(1);plot(x,y1,'r');figure(2);plot(x,y2,'b');clear;close all;[x,y]=meshgrid(-2:.05:2,-2:.05:2);%设置二维网格z=sinc(x).*sinc(y);figure(1);imshow(z);%二维灰度图figure(2);imagesc(z);%二维彩图figure(3);mesh(z);%三维图像clear;close all;a=5;x=linspace(-5,5,100);y1=exp(-pi.*(x/a).^2);%第一类贝塞尔函数,一阶b=2;y2=exp(-pi.*(x/b).^2);%第一类贝塞尔函数,一阶figure(1);plot(x,y1,'r');figure(2);plot(x,y2,'b');clear;close all;a=1;b=1;[x,y]=meshgrid(-2:.05:2,-2:.05:2);%设置二维网格z=exp(-pi.*((x/a).^2+(y/b).^2));%高斯函数figure(1);imagesc(z);figure(2);mesh(z);clear;close all;M=100;%x方向抽样点数N=100;%y方向抽样点数w=10;%缝的宽度d=10;%缝偏离中心的位置obj1=zeros(M,N);%赋值为0的一个二维矩阵,大小为M*N obj1(:,(N/2-w/2):N/2+w/2)=1.0;%设置缝在y向中心,且缝的宽度为wfigure(1);imshow(obj1);obj2=zeros(M,N);obj2(:,(N/2-d)-w/2:(N/2-d)+w/2)=1.0;%缝偏离中心位置d个像素figure(2);imshow(obj2);clear;close all;M=100;%x方向抽样点数N=100;%y方向抽样点数w=10;%缝的宽度d=10;%缝偏离中心的位置obj1=zeros(M,N);%赋值为0的一个二维矩阵,大小为M*N obj1(:,(N/2+d)-w/2:(N/2+d)+w/2)=1.0;%设置缝在y向中心,且缝的宽度为wobj2=zeros(M,N);obj2(:,(N/2-d)-w/2:(N/2-d)+w/2)=1.0;%缝偏离中心位置d个像素obj3=obj1+obj2;figure(1);imshow(obj3);clear;close all;M=100;N=100;w=10;%缝宽obj=zeros(M,N);obj((M/2-w/2):(M/2+w/2),(N/2-w/2):(N/2+w/2))=1.0;%缝处于中心位置figure(1);imshow(obj);figure(2);imagesc(obj);figure(3);mesh(obj);。
理想透镜衍射matlab
在MATLAB中,可以使用物理光学工具箱来模拟理想透镜的衍射
效应。
衍射是光通过边缘或孔径时发生的偏折现象,理想透镜的衍
射模拟可以帮助我们理解光的传播规律和光学系统的性能。
首先,我们需要定义理想透镜的参数,包括透镜的曲率半径、
折射率等。
然后,我们可以使用MATLAB中的衍射函数(例如fft2)来模拟透镜的衍射效应。
具体步骤如下:
1. 定义透镜参数,包括透镜的孔径大小、曲率半径、折射率等
参数。
2. 生成输入光场,可以使用MATLAB中的函数生成一个表示入
射光场的二维矩阵,可以是单色光或者白光。
3. 衍射计算,使用MATLAB中的快速傅里叶变换函数fft2对输
入光场进行衍射计算,得到透镜后的光场分布。
4. 显示结果,可以使用MATLAB中的图像显示函数imshow来显
示衍射后的光场分布,观察衍射效应。
在模拟理想透镜的衍射过程中,需要考虑透镜的孔径大小、入射光波长、透镜的焦距等因素,这些参数都会影响衍射效应的模拟结果。
此外,还可以通过调整透镜参数、入射光场的波前形状等来进一步探究理想透镜的衍射特性。
总的来说,通过MATLAB中物理光学工具箱提供的函数和工具,我们可以比较直观地模拟理想透镜的衍射效应,从而更好地理解光学系统的行为。
希望这个回答能够帮到你,如果你有更多关于理想透镜衍射模拟的问题,欢迎继续提问。
matlab计算衍射衍射是一种波传播时遇到障碍物或开口时发生的现象,对于光学、声学等领域具有重要意义。
本文将介绍MATLAB在衍射计算中的基本原理、常用方法以及实际应用,旨在为研究者提供一个全面的MATLAB衍射计算指南。
一、引言衍射是波在传播过程中遇到障碍物或开口时发生的波动现象,广泛应用于光学、声学、天文学等领域。
MATLAB作为一种高效的数学建模和计算工具,在衍射计算中有着广泛的应用。
本文将深入探讨MATLAB在衍射计算中的基本原理、方法和实际应用。
二、MATLAB中的衍射基本原理赫姆霍兹方程:衍射计算的基础是赫姆霍兹方程,描述了波场的传播和衍射现象。
MATLAB通过数值方法求解赫姆霍兹方程,实现波场的模拟。
傅里叶光学:利用傅里叶光学原理,将衍射问题转化为频域中的问题。
MATLAB提供了强大的傅里叶变换工具,可以对衍射场景进行频谱分析。
三、MATLAB中的衍射计算方法傅里叶衍射公式:利用傅里叶变换和逆变换,可以在频域中高效计算衍射场景。
MATLAB的fft和ifft函数可用于实现这一计算过程。
衍射积分公式:利用衍射积分公式,通过对波场的积分来计算衍射图样。
MATLAB的数值积分函数可以方便地应用于这一过程。
四、MATLAB中的衍射实际应用光学衍射模拟:MATLAB可用于模拟各种光学衍射现象,如单缝衍射、双缝衍射、光栅衍射等。
通过调整参数,可以实时观察衍射图样的变化。
声学衍射计算:在声学领域,MATLAB可以用于计算声波在不同环境中的衍射效应,对声学设备的设计和优化提供支持。
天文学应用:对于射电天文学等领域,MATLAB可用于计算射电波在宇宙中的传播和衍射,帮助天文学家理解观测数据。
五、MATLAB衍射计算的优势与挑战优势:MATLAB提供了丰富的数学函数和工具箱,使得衍射计算更加简便高效。
其图形用户界面(GUI)也有助于直观地展示计算结果。
挑战:随着衍射计算问题的复杂化,需要更高级的数值方法和算法,这对MATLAB的计算性能提出了一定的挑战。
基于MATLAB 模拟演示衍射实验阚亮亮 李宗景 吴小龙 尹岩 将matlab 应用与以前学习过的课程是学习该课程的最重要的意义,通过matlab 演示衍射实验效果好,简洁,直观。
下图是单缝衍射是matlab 所得到的图像-0.025-0.02-0.015-0.01-0.0050.0050.010.0150.020.025附上MATLAB 程序:lamda=500e-9; %波长N=1; %缝数 ,可以随意更改变换a=2e-4;D=5;d=5*a;ym=2*lamda*D/a;xs=ym;%屏幕上y 的范围n=1001;%屏幕上的点数ys=linspace(-ym,ym,n);%定义区域for i=1:nsinphi=ys(i)/D;alpha=pi*a*sinphi/lamda;beta=pi*d*sinphi/lamda;B(i,:)=(sin(alpha)./alpha).^2.*(sin(N*beta)./sin(beta)).^2;B1=B/max(B);endNC=256; %确定灰度的等级Br=(B/max(B))*NC;subplot(1,2,1)image(xs,ys,Br);colormap(hot(NC)); %色调处理subplot(1,2,2)plot(B1,ys,'k');衍射现象的模拟结果与讨论在实验时改变N的值可以得到单缝以及多缝衍射的输出结果,并可以得到这样的结论:(1)当入射光波长一定时,单缝宽度a越小,衍射条纹越宽,衍射现象越显著;(2)单缝越宽,衍射越不明显,单缝宽度逐渐增大,衍射条纹越来越窄;(3)当缝宽a>>λ时,各级衍射条纹向中央明纹靠拢,而无法分辨,这时衍射现象消失。
结束语利用MATLAB对抽象物理现象进行计算机仿真时,首先必须对物理过程进行数学抽象,建立适合程序实现的数学模型,其次利用MATLAB软件包中的有关工具编制m文件,最后对物理过程和物理现象进行模拟,从而可以把抽象的物理问题进行简明、直观的动态展现。
光的干涉和衍射的matlab模拟单缝夫琅和费衍射是光的衍射现象之一,如图2所示。
当单色光波通过一个狭缝时,光波会向周围扩散,形成一系列同心圆环。
这些圆环的亮度分布是由夫琅和费衍射公式描述的,即。
其中为入射光波长,为狭缝宽度,为衍射角。
夫琅和费衍射公式表明,随着衍射角的增大,圆环的半径会减小,而亮度则会逐渐减弱。
在MATLAB中,可以通过输入实验参数,如光波长和狭缝宽度,来观察圆环的亮度分布和半径随衍射角的变化情况。
同时,还可以探讨不同波长和狭缝宽度对圆环亮度和半径的影响。
4双缝衍射双缝衍射是光的干涉和衍射现象的结合,如图3所示。
当一束单色光波通过两个狭缝时,光波会在屏幕上形成一系列干涉条纹和衍射环。
干涉条纹的亮度分布与___双缝干涉相同,而衍射环的亮度分布则由夫琅和费衍射公式描述。
在MATLAB中,可以通过输入实验参数,如光波长、双缝间距和双缝宽度,来观察干涉条纹和衍射环的亮度分布和条纹间距、环半径随实验参数的变化情况。
同时,还可以探讨不同实验参数对干涉条纹和衍射环的影响。
5衍射光栅衍射光栅是一种利用衍射现象制成的光学元件,如图4所示。
当一束单色光波通过光栅时,光波会被分为多个衍射光束,形成一系列亮度不同的衍射条纹。
衍射条纹的亮度分布与夫琅和费衍射公式描述的圆环类似,但是条纹间距和亮度分布会受到光栅常数的影响。
在MATLAB中,可以通过输入实验参数,如光波长和光栅常数,来观察衍射条纹的亮度分布和条纹间距随实验参数的变化情况。
同时,还可以探讨不同实验参数对衍射条纹的影响。
总之,通过MATLAB模拟光的干涉和衍射现象,可以更加直观地理解和掌握这些重要的光学现象,同时也可以为实验设计和数据分析提供有力的工具和支持。
本文介绍了___双缝干涉、单缝夫琅禾费衍射和衍射光栅光谱的计算机模拟。
当一束单色平行光通过宽度可调的狭缝,射到其后的光屏上时,形成一系列亮暗相间的条纹。
单缝夫琅禾费衍射的光强分布可以通过惠更斯-费涅耳原理计算。
光的干涉和衍射一、实验目的① 学习用用模拟实验方法探究光的干涉和衍射问题.② 进一步熟悉MA TLAB 编程.二、实验内容和要求1. 双缝干涉模拟实验杨氏双缝干涉实验是利用分波前法获得相干光束的典型例子. 如图2.24所示,单色光通过两个窄缝s 1,s 2射向屏幕,相当于位置不同的两个同频率同相位光源向屏幕照射的叠合,由于到达屏幕各点的距离(光程)不同引起相位差,叠合的结果是在有的点加强,在有的点抵消,造成干涉现象.图2.24 双缝干涉示意图 考虑两个相干光源到屏幕上任意点P 的距离差为1221r r r r r ==∆=- (2.19) 引起的相位差为2πrϕλ∆=设两束相干光在屏幕上P 点产生的幅度相同,均为A 0,则夹角为φ的两个矢量A 0的合成矢量的幅度为A =2A 0 cos(φ/2)第二章 数理探究试验 135光强B 正比于振幅的平方,故P 点光强为B =4B 0cos 2(φ/2) (2.20)运行sy211.m 程序得到干涉条纹如图2.27所示.clear all %sy211.mlam=500e-9; %输入波长a=2e-3; D=1;ym=5*lam*D/a; xs=ym; %设定光屏的范围n=101;ys=linspace(-ym,ym,n); % 把光屏的y 方向分成101点for i=1:nr1=sqrt((ys(i)-a/2).^2+D^2);r2=sqrt((ys(i)+a/2).^2+D^2);phi=2*pi*(r2-r1)/lam;B(i,:)=4*cos(phi/2).^2;endN=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) %画出光强变化曲线图2.25中左图是光屏上的干涉条纹,右图是光屏上沿y 轴方向光强的变化曲线. 从图中也不难看出,干涉条纹是以点o 所对应的水平线为对称,沿上下两侧交替,等距离排列,相邻亮条纹中心间距为2.5×10-4m. -0.4-0.200.20.4-1.5-1-0.500.511.5x 10图2.25 单色光的干涉条纹这与理论推导和实验结果基本一致.下面我们从理论上加以推导,由上面的式(2.19)可得22212121()()2d r r r r r r y -=+-=-1.5 -1 -0.5 0 0.5 1 1.5 -0.4 -0.2 0 0.4 0.2基于MA TLAB 的数学实验136 考虑到a ,y 很小,(r 1+r 2)=2D ,所以21D r r y a-= 这样就得到点P 处于亮条纹中心的条件为20122D y k k a λ==±±,,,, (2.21) 因此,亮条纹是等间距的,相邻条纹间距为94150010 2.510m 0.002D a λ--=⨯=⨯. 问题2.39:推导出点P 处于暗条纹中心的条件并与模拟结果相比较,看是否一致? 考虑到纯粹的单色光不易获得,通常都有一定的光谱宽度,这种光的非单色性对光的干涉会产生何种效应,下面我们用MA TLAB 计算并仿真这一问题.非单色光的波长不是常数,必须对不同波长的光分别处理再叠加起来. 我们假定光源的光谱宽度为中心波长的±10%,并且在该区域均匀分布. 近似取11根谱线,相位差的计算表达式求出的将是不同谱线的11个不同相位. 计算光强时应把这11根谱线产生的光强叠加并取平均值,即211012π4cos ()211k kk k r B B ϕλϕ=∆==∑ 将程序sy211.m 中的9,10两句换成以下4句,由此构成的程序就可仿真非单色光的干涉问题. N1=11;dL=linspace(-0.1,0.1,N1);%设光谱相对宽度±10%, lam1=lam*(1+dL');%分11根谱线,波长为一个数组 Phi1=2*pi*(r2-r1)./ lam1;%从距离差计算各波长的相位差 B(i, :)=sum(4*cos(Phi1/2).^2)/N1; %叠加各波长并影响计算光强运行修改后的程序得到的干涉条纹如图2.26所示. 可以看出,光的非单色性导致干涉现象的减弱,光谱很宽的光将不能形成干涉.第二章 数理探究试验 137-0.4-0.200.20.4-1.5-1-0.500.511.5-3-3图2.26 非单色光的干涉条纹 2. 单缝衍射的模拟实验一束单色平行光通过宽度可调的狭缝,射到其后的光屏上. 当缝宽足够小时,光屏上形成一系列亮暗相间的条纹,这是由于从同一个波前上发出的子波产生干涉的结果. 当光源到衍射屏的距离和光屏到衍射屏的距离都是无穷大时,即满足远场条件时,我们称这种衍射为夫琅禾费衍射. 所以夫琅禾费衍射中入射光和衍射光都是平行光. 为了模拟单缝衍射现象,我们把单缝看成一排等间隔光源,共NP 个光源分布在A ~B 区间内,离A 点间距为yp ,则屏幕上任一点S 处的光强为NP 个光源照射结果的合成.如图2.27所示,子波射线与入射方向的夹角ϕ称为衍射角,0=ϕ时,子波射线通过透镜后,必汇聚到O 点,这个亮条纹对应的光强称为主极大. NP 个光源在其他方向的射线到达S 点的光程差,应等于它们到达平面AC 的光程差,即sin yp ϕ∆=,其中sin ys Dϕ≈ ys 为S 点的纵坐标,则与A 点光源位相差为2π2πyP ys Dαλλ=∆=s O基于MA TLAB 的数学实验 138 -0.4-0.200.20.4-1.5-1-0.500.511.5-3-3图2.28 单缝衍射条纹图2.27 单缝衍射的模拟实验设单缝上NP 个光源的振幅都为1,在x ,y 轴上的分量各为cos sin αα,,合振幅的平方为:()()22COSa COSa ∑+∑. 又光强正比于振幅的平方,所以相对于O 点主极大光强也为22(cos )(sin )0I I αα=+∑∑程序sy212.m 模拟了单缝衍射现象,这里取波长λ=500nm ,缝宽a =1mm ,透镜焦距D =1m ,运行结果如图2.28所示.clear all %sy212.mlam=500e-9;a=1e-3;D=1;ymax=3*lam*D/a; %屏幕范围(沿y 向)Ny=51; %屏幕上的点数(沿y 向)ys=linspace(-ymax,ymax,Ny);NP=51;yP=linspace(0,a,NP); %把单缝分成NP 个光源for i=1:Ny %对屏幕上y 向各点作循环SinPhi=ys(i)/D;alpha=2*pi*yP*SinPhi/lam; SumCos=sum(cos(alpha)); SumSin=sum(sin(alpha));B(i,:)=(SumCos^2+SumSin^2)/NP^2;end N=255; % 确定用的灰度等级为255级%使最大光强对应于最大灰度级(白色)Br=B/max(B)*N; subplot(1,2,1)%画衍射条纹,用灰度级颜色图image(ymax,ys,Br); colormap(gray(N));subplot(1,2,2)%画屏幕上光强曲线 plot(B,ys,'*',B,ys);grid;分析图2.28中的衍射条纹,我们可以看出所有亮暗条纹都平行于单缝,O 点光强为最大,这都和理论推导结果相一致.问题2.40: 从理论上讲,中央亮条纹的半角宽和第一条暗条纹的衍射角都应等于λ/a ,各次极大角宽都等于中央亮条纹的半角宽,图2.28模拟的衍射条纹符合这个结论吗?3. 光栅衍射的模拟实验有大量等宽度、等间距的平行狭缝组成的光学系统称为衍射光栅. 单缝宽度a 和刻第二章 数理探究试验 139痕宽度b 之和称为光栅常数d ,d =a +b . 光栅衍射条纹是单缝衍射和缝间干涉的共同结果.设光栅有N 条狭缝,透镜焦距为D ,理论分析可以得到,光屏上P 点的夫琅禾费衍射光强I P /I 0分布为220sin sin ()()sin P I N I αβαβ= 式中sin sin sin s y a d Dππαϕβϕϕλλ==≈,, 运行程序sy213.m 得到衍射条纹如图2.29所示.clear all %sy213.mlam=632.8e-9; N=2;a=2e-4; D=5;d=5*a;ym=1.89*lam*D/a;xs=ym; %设定光屏的范围n=1001;ys=linspace(-ym,ym,n); % y 方向分成1001点for i=1:nSinphi=ys(i)/D;alpha=pi*a*Sinphi/lam;beta=pi*d*Sinphi/lam;B(i, :)=(sin(alpha)./alpha).^2.*(sin(N*beta)./sin(beta)).^2 ;B1=B/max(B); %将最大光强设为1endNC=255;Br=B/max(B)*NC;subplot(1,2,1)image(xs,ys,Br); %画衍射条纹colormap(gray(NC))subplot(1,2,2)plot(B1,ys) %画出沿y 向的相对光强变化曲线问题2.41:程序sy213.m 中d =5a ,观察图2.29衍射条纹,看有无缺级现象,为什么?改变sy213.m 中的波长、缝宽、光栅常数值,看衍射条纹有何变化?试加以解释.基于MA TLAB 的数学实验 140-0.4-0.200.20.4-0.025-0.02-0.015-0.01-0.0050.0050.010.0150.020.025图2.29 光栅衍射条纹第二章数理探究试验141 《车辆制冷与空调》第二次作业参考答案《车辆隔热壁》、《制冷方法与制冷剂》、《蒸汽压缩式制冷》一.简答题1.什么是隔热壁的传热系数?它的意义是什么?答:隔热壁的传热系数指车内外空气温度相差1℃时,在一小时内,通过一平方米热壁表面积所传递的热量。
实验注意事项(必读)1.没有弄清楚实验内容者,禁止接触实验仪器。
2.注意激光安全。
绝对不可用眼直视激光束,或借助有聚光性的光学组件观察激光束,以免损伤眼睛。
3.注意用电安全。
He-Ne激光器电源有高压输出,严禁接触电源输出和激光头的输入端,避免触电。
4.注意保持卫生。
严禁用手或其他物品接触所有光学元件(透镜、反射镜、分光镜等)的光学表面;特别是在调整光路中,要避免手指碰到光学表面。
5.光学支架上的调整螺丝,只可微量调整。
过度的调整,不仅损坏器材,且使防震功能大减。
6.实验完成后,将实验所用仪器摆放整齐,清理一下卫生。
Matlab数字衍射光学实验一计算机仿真过程是以仿真程序的运行来实现的。
仿真程序运行时,首先要对描述系统特性的模型设置一定的参数值,并让模型中的某些变量在指定的范围内变化,通过计算可以求得这种变量在不断变化的过程中,系统运动的具体情况及结果。
仿真程序在运行过程中具有以下多种功能:1)计算机可以显示出系统运动时的整个过程和在这个过程中所产生的各种现象和状态。
具有观测方便,过程可控制等优点;2)可减少系统外界条件对实验本身的限制,方便地设置不同的系统参数,便于研究和发现系统运动的特性;3)借助计算机的高速运算能力,可以反复改变输入的实验条件、系统参数,大大提高实验效率。
因此.计算机仿真具有良好的可控制性(参数可根据需要调整)、无破坏性(不会因为设计上的不合理导致器件的损坏或事故的发生)、可复现性(排除多种随机因素的影响,如温度、湿度等)、易观察性(能够观察某些在实际实验当中无法或者难以观察的现象和难以实现的测量,捕捉稍纵即逝的物理现象,可以记录物理过程的每一个细节)和经济性(不需要贵重的仪器设备)等特点。
Matlab是MathWorks公司于1982年推出的一套高性能的数值计算和可视化软件。
它集数值分析、矩阵运算、信号处理和图形显示于一体,构成了一个方便、界面友好的用户环境。
它还包括了ToolBox(工具箱)的各类问题的求解工具,可用来求解特定学科的问题。
Matlab的长处在于数值计算,能处理大量的数据,而且效率比较高。
MathWorths公司在此基础上开拓了符号计算、文字处理、可视化建模和实时控制能力,增强了Matlab的市场竞争力,使Matlab成为市场主流的数值计算软件。
Matlab产品族支持概念设计、算法开发、建模仿真、实时实现的理想的集成环境。
其主要功能有:数据分析、数值和符号计算、工程与科学绘图、控制系统设计、数字图像信号处理、财务工程,建模、仿真、原型开发,应用开发,图形用户界面。
在光学仪器设计和优化过程中,计算机的数值仿真已经成为不可缺少的手段。
通过仿真计算,可以大幅度节省实验所耗费的人力物力,特别是在一些重复实验工作强度较大且对实验器材、实验环境等要求较苛刻的情况下。
如在大型激光仪器的建造过程中,结合基准实验的仿真计算结果可为大型激光器的设计和优化提供依据。
仿真光学实验也可应用于基础光学教学。
光学内容比较抽象,如不借助实验,很难理解,如光的干涉、菲涅耳衍射、夫琅禾费衍射等。
传统的光学实验需要专门的实验仪器和实验环境。
其操作比较烦琐,误差大现象也不明显,对改变参数多次观察现象也多有不便。
MATLAB是当今国际上公认的在科技领域方面最为优秀的应用软件和开发环境。
利用它对光学实验仿真可避免传统实验中的缺点,强大的功能使光学实验变得简便准确。
基于MATLAB的科学可视化功能对光学仿真实验现象进行计算机模拟的效果更加准确明显。
1.实验目的:掌握基本的Matlab编程语言,了解其编程特点;模拟几种常用函数,了解其编程过程及图像显示命令函数,掌握Matlab画图方法;通过设计制作一系列光学研究物体掌握其编程方法;掌握光波的matlab编程原理及方法,初步了解Matlab语言在光学中的应用。
2.实验原理请先熟悉Matlab 程序的编程界面。
一.特殊函数的Matlab 模拟1) 复指数函数()()e cos sin i i ϕϕϕ=+,实部cos(φ), 虚部sin(φ), %%%--matlab 代码-------------------------------------------phi=0:pi/10:2*pi; %赋值z=exp(i*phi);%指数函数exp( );u=real(z);%取实部v=imag(z); %取虚部figure(1) %画图plot(phi,u) %画实部随变量的变化曲线figure(2)plot(phi ,v) %画虚部随变量的变化曲线%%%----------------------------------------------------------------改变变量phi 观察曲线变化。
2)开根号:sqrt(x),%%--------------------------clear %清除内存close all %关闭所有窗口x=linspace(0,2*pi,100);%设置横坐标范围及网格y1=sqrt(x); %开根号figure% 图plot(x,y1,'r')%画函数1的曲线,‘r ’代表图像颜色,红色%%------------------------------------------------3)函数:一维sinc(x)函数,sin(/)sinc /x x a a x a ππ⎛⎫= ⎪⎝⎭%%---------------------matlab 代码-------------------------clear %清除内存close all %关闭所有窗口x=linspace(-2*pi,2*pi,100);%设置横坐标范围及网格y1=besselj(1,x);%第一类贝塞尔函数,一阶y2=besselj(0,x);%第一类贝塞尔函数,0阶figure(1)% 图1plot(x,y1,'r')%画函数1的曲线,‘r ’代表图像颜色,红色figure(2) % 图2plot(x,y2,'b') %画函数2的曲线,‘b ’代表图像颜色,蓝色%%%%%%%%%%---------------------------------------二维sinc 函数:sinc ,sinc sinc x y x y a b a b ⎛⎫⎛⎫⎛⎫=⋅ ⎪ ⎪ ⎪⎝⎭⎝⎭⎝⎭,a ,b 为正数。
%%---------------------matlab 代码-------------------------clear %清除内存close all %关闭所有窗口[x,y] = meshgrid(-2:.05:2, -2:.05:2); %设置二维网格z=sinc(x).*sinc(y); %sinc 函数figure(1)imshow(z) %二维灰度图figure(2)imagesc(z) %二维彩色figure(3)mesh(z)%三维surfl(x,y,z)%三维%%---------------------matlab 代码-------------------------改变变量a ,b 观察模拟图像变化。
3)高斯函数:一维高斯函数 2Gauss exp x x a a π⎡⎤⎛⎫⎛⎫=-⎢⎥ ⎪ ⎪⎝⎭⎝⎭⎢⎥⎣⎦%%---------------------matlab 代码-------------------------clear %清除内存close all %关闭所有窗口a=5;%常数x=linspace(-5,5,100);%设置一维横坐标范围及网格y1=exp(-pi.*(x/a).^2);%第一类贝塞尔函数,一阶figure(1)% 图1b=2;%常数y2=exp(-pi.*(x/b).^2);%第一类贝塞尔函数,一阶figure(1)% 图1plot(x,y1,'r')%画函数1的曲线,‘r ’代表图像颜色,红色figure(2) % 图2plot(x,y2,'b') %画函数2的曲线,‘b ’代表图像颜色,蓝色%%-------------------------------------------------------- 二维高斯函数:sinc ,sinc sinc x y x y a b a b ⎛⎫⎛⎫⎛⎫=⋅ ⎪ ⎪ ⎪⎝⎭⎝⎭⎝⎭,a ,b 为正数。
Gauss ,Gauss Gauss x y x y a b a b ⎛⎫⎛⎫⎛⎫=⋅ ⎪ ⎪ ⎪⎝⎭⎝⎭⎝⎭22exp x y a b π⎧⎫⎡⎤⎪⎪⎛⎫⎛⎫=-+⎢⎥⎨⎬ ⎪ ⎪⎝⎭⎝⎭⎢⎥⎪⎪⎣⎦⎩⎭ 当中a、b 为1时,()22Gauss ,exp ()x y x y π⎡⎤=-+⎣⎦%%---------------------matlab 代码-------------------------clear %清除内存close all %关闭所有窗口a=1;b=1;[x,y] = meshgrid(-2:.05:2, -2:.05:2); %设置二维网格z=exp(-pi.*((x/a).^2+(y/b).^2)); %高斯函数figure(1)figure(2)mesh(z)%%---------------------matlab代码-------------------------改变参数a,b的取值,观察模拟结果变化。
4)第一类贝塞尔函数besselj(v,z)%%---------------------matlab代码-------------------------clear %清除内存close all %关闭所有已打开的窗口x=linspace(-2*pi,2*pi,100);%设置一维横坐标范围及网格,pi为常数πy1=besselj(1,x);%第一类贝塞尔函数,一阶y2=besselj(0,x);%第一类贝塞尔函数,0阶figure(1)% 图1plot(x,y1,'r')%画函数1的曲线,‘r’代表图像颜色,红色figure(2) % 图2plot(x,y2,'b') %画函数2的曲线,‘b’代表图像颜色,蓝色%%%-------------------------------------------------注意******,matlab编程中的编码输入必须在英文输入法下,否则程序将不被识别。
二.常用物体的Matlab模拟1)单缝%%%%%%%%%%%%-------------------------------clearclose all%%%%%%%%%%%---------------参数设定----------------L=2;%物体总长度(mm)M=100;%x方向抽样点数dx=L/M;%抽样间隔(mm)N=M;%y方向抽样点数w=10; % 单缝的宽度,单位像素个数d=10;% 缝偏离中心位置%%%%%%%%%%----------单缝------------obj1=zeros(M,N);%赋值为0的一个二维矩阵,大小为M*N;obj1(:,(N/2-w/2):N/2+w/2)=1.0; %缝宽范围内赋值为1,缝处于中心位置figure(1);imshow(obj1);%%%%----------改变单缝所处位置-----------------obj2=zeros(M,N);%赋值为0的一个二维矩阵,大小为M*N;obj2(:,(N/2-d)-w/2:(N/2-d)+w/2)=1.0; %缝宽范围内赋值为1,缝偏离中心位置10个像素figure(2);imshow(obj2);%%%%%--------------------------------------------------------------------------2)双缝在单缝的基础上,编程两个不同位置的单缝,然后相加,即可得出双缝clearclose all%%%%%%%%%%%---------------参数设定----------------L=2;%物体总长度(mm)M=100;%x方向抽样点数dx=L/M;%抽样间隔(mm)N=M;%y方向抽样点数w=10; % 单缝的宽度,单位像素个数d=10;% 缝偏离位置, 单位像素个数%%%%%%%%%%----------单缝1------------obj1=zeros(M,N);%赋值为0的一个二维矩阵,大小为M*N;obj1(:,(N/2+d)-w/2:(N/2+d)+w/2)=1.0; %缝宽范围内赋值为1,缝处于中心右边10位置%%%%----------单缝2-----------------obj2=zeros(M,N);%赋值为0的一个二维矩阵,大小为M*N;obj2(:,(N/2-d)-w/2:(N/2-d)+w/2)=1.0; %缝宽范围内赋值为1,缝偏离中心位置左边10个像素%%%%%-----------------双缝------------obj3=obj1+obj2;%双缝%%%%-----------------------------------------figure(1);imshow(obj1);figure(2);imshow(obj2);figure(3);imshow(obj3);%%%%%--------------------------------------------------------------------------3)矩形孔%%%%%--------------------------------------------------------------------------clearclose all%%%%%%%%%%%---------------参数设定----------------L=2;%物体总长度(mm)M=100;%x方向抽样点数dx=L/M;%抽样间隔(mm)N=M;%y方向抽样点数w=20; % 单缝的宽度,单位像素个数%%%%%%%%%%----------单缝------------obj=zeros(M,N);%赋值为0的一个二维矩阵,大小为M*N;obj((M/2-w/2):M/2+w/2,(N/2-w/2):N/2+w/2)=1.0; %缝宽范围内赋值为1,缝处于中心位置figure(1);imshow(obj);%%%%%--------------------------------------------------------------------------4)十字孔%%%%%%%%%%%%-------------------------------clearclose all%%%%%%%%%%%---------------参数设定----------------L=2;%物体总长度(mm)M=100;%x方向抽样点数dx=L/M;%抽样间隔(mm)N=M;%y方向抽样点数w=10; % 单缝的宽度,单位像素个数d=10;% 缝偏离中心位置%%%%%%%%%%----------单缝------------obj1=zeros(M,N);%赋值为0的一个二维矩阵,大小为M*N;obj1(:,(N/2-w/2):N/2+w/2)=1.0; %缝宽范围内赋值为1,缝处于中心位置obj1((M/2-w/2):M/2+w/2,:)=1.0; %缝宽范围内赋值为1,缝处于中心位置figure(1);imshow(obj1);3.实验内容,(1)阅读实验讲义和有关参考文献,熟悉Matlab编程语言。