MATLAB实验牛顿环实验的MATLAB仿真

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验三 牛顿环实验的MATLAB 仿真

一、实验目的

MATLAB 在光学实验的计算机仿真方面有着重要的应用。使用MATLAB 可以仿真大多数光学实验,例如杨氏双缝干涉实验、牛顿环实验、夫琅和费衍射等,使得原本抽象的必须借助实验仪器才能感知的光学现象可以直观而且动态的显示在计算机上,从而获得对某一特定光学现象充分的感性认知,加深我们对抽象光学现象的理解和认识。这里将以牛顿环实验的MATLAB 仿真为例,向大家介绍光学实验的MATLAB 动态仿真的基本方法并通过上机练习以达到如下几个目的:

1. 掌握用imshow 实现光强度二维分布的可视化显示方法;

2. 掌握MATLAB 动态仿真技术—影片动画技术;

二、实验原理

1. 牛顿环干涉原理

右图所示为牛顿环装置的示意图。R 为牛顿环透镜的曲率半径,d 为空气膜的厚度(R d >>)。垂直入射光经空气膜的上下两表面反射后产生干涉,干涉后的光强

12122cos()(1) I I I I I φ=++∆

其中I 1和I 2是两束相干光的光强,可近似认为

I 1 = I 2 = I 0。∆φ为两束光相遇时的位相差

2(2)(2)2 d πλ

φλ∆=+ 由图中的几何关系以及R d >>条件可得

2

(3)2 r d R

≈ (2)、(3)式代入(1)式后有

22

2202sin ()sin ()(4) r r I I R R ππλλ== 上式中为了方便取系数2I 0 =1。在直角坐标系中222r x y =+,(x,y)代表光强的二维分布点的坐标。(4)式是实验仿真的基础,对于任意给定点(x,y),如果该点的光强I 取最大值1,则该点为明条纹所在;若光强I 取最小值0,则是暗纹所在;其他值则介于两者之间。

(4)式给出了牛顿环干涉光强的二维平面分布,那么如何将光强的平面分布(数值)可视化显示出来?下面介绍一种简单的实现方法。

图1

2. 光强分布的可视化实现

对于数据的可视化,MATLAB 提供了很多实现方法,比如前面介绍的plot 、plot3、surf 函数等。对于牛顿环实验来说,虽可以使用surf 函数将光强I 在xy 平面上的分布表现出来,但是得到的是3维曲面图,和实验观察到的2维环状的干涉条纹图形不一致,达不到仿真的目的。所谓仿真,也就是把实验观察屏上二维的干涉条纹图像通过计算机再现出来,这就是图像显示技术。图像显示是一种特殊的图形绘制,MATLAB 提供了一系列创建和显示图像对象的命令,例如image, pcolor ,imshow 等。考虑到干涉条纹的明与暗可用白与黑来显示,而强度介于两者之间的条纹则可用不同层次的灰度来显示,因此选择灰度图像来显示牛顿环的干涉条纹比用彩色图像显示效果更逼真;此外,相对来说用imshow 创建灰度图像比用image 和pcolor 在语句上要简单些,所以这里我们选择imshow 指令来进行光强的可视化操作(即干涉图像的再现),至于image 和pcolor 指令亦可实现不过语句稍复杂些,感兴趣的同学可以参考有关的资料。

使用imshow 建立灰度图像的使用格式:imshow(I,N)

其中参数N 为正整数,指定灰度的层次,当缺省该参数时,系统默认为256级的灰度级;参数I 为数值矩阵,imshow 的作用就是将数值矩阵I 的元素值用N 个灰度级的黑白图像可视化显示出来。实际上是在数值矩阵I 和N 个灰色调之间建立了一种颜色映射关系:I 当中元素值最大者映射为白色(将该元素值作为白色显示),元素值最小者映射为黑色(将该元素值作为黑色显示),元素值介于最大和最小之间的则按照某种约定的规则映射到其它的灰度级(显示为不同灰度的灰色)。

为了方便叙述,假定再现的图像尺寸2mm ×2mm,使用上述指令可以很方便的将牛顿环干涉条纹在该区域内再现:

● 首先,利用(4)式获取干涉光强I 在该区域(0.0010.001,0.0010.001 x y -≤≤-≤≤,

假定观察屏是xy 平面)的数值分布

x=linspace(-0.001,0.001,200);

y=linspace(-0.001,0.001,200);

[X,Y]=meshgrid(x,y); %将xy 平面2mm×2mm 的区域分割为200×200的网

%格(像素),矩阵X 、Y 分别输出格点的x 和y 坐标

r2=X.^2+Y.^2 ;

I=abs(sin(pi*r2/R/λ)).^2;

% 200×200的数值矩阵;计算格点上光强I,得到光强的数值分布

● 接下来使用imshow 指令将数值矩阵I 可视化

imshow(I)

3. 动态仿真技术

牛顿环实验(也包括其他光学实验)的仿真有2个环节,其一是将观察屏(xy 平面)上

干涉光强的分布可视化显示;其二是动态仿真,比如当空气薄膜的厚度连续改变时(通过向上移动牛顿环中的透镜),干涉条纹也会随之移动,采用动态仿真可以再现这一过程。前者我们在第2小节中做了介绍,下面介绍一种MATLAB动态仿真技术—影片动画技术。

顾名思义,影片动画技术类似于电影的制作,其原理是首先对仿真的过程按时间次序进行“拍照”,获得一帧一帧的画面(称为帧),并将之存档,然后再按时间顺序以高于视觉暂留的帧频率播放帧,即可获得类似于电影的动画效果。这种动画技术适用于难以实时快速绘制的复杂画面,但计算量大,占用内存较多。在MATLAB中实现影片动画依次要用到下列几个函数:

①moviein函数该函数将产生一个结构体数组(structure,以下称帧结构体)来存放动画的帧(即所拍摄的一幅幅画面),每帧画面作为结构体的一个元素保存。调用格式 fmat = moviein (N)

作用是创建一个能存放N个帧的(1×N)结构体数组fmat。该结构体包含两个域cdata和colormap,前者用于存放帧的图像数据,后者存放帧使用到的颜色表。

②getframe函数该函数作用是对当前的图像进行快照(“抓拍”),通常有两种使用格式:

A. getframe 该格式不带参数,“抓拍”当前坐标轴里的内容;

B. getframe(h)“抓拍”某个图形窗口或坐标轴里的内容,该图形窗口或坐标轴以句柄h标识(图形窗口和坐标轴都是一种图形对象,每一种图形对象都有自己特有的句柄handle,即标识,类似于“身份证”)。例如

>> fmat(1) = getframe (gcf)

抓拍当前图形窗口下的内容,并将该帧画面存放于帧结构体fmat的第一个元素中;gcf为Get handle to current figure的缩写,意思是获取当前图形窗口的句柄。在命令窗口中输入gcf 可显示当前图形窗口的句柄值,是个整数。

③movie函数

作用是按顺序回放帧结构体fmat中存放的各帧画面以产生动画感。一般格式:

movie(h, famt, n, fps)

h 是播放动画的图形窗口或坐标轴的句柄,缺省时表示在当前的坐标轴中播放动画;famt 是帧结构体名,不可省;

n 是重复播放的次数,缺省时,只播放一次;

fps 代表每秒播放的帧数(即帧频),一般应快于视觉暂留,缺省时系统默认fps=12。

在动画播放前,movie函数首先将每帧图像的数据载入内存(此时图像会一帧一帧的显示出来),然后再按照用户设定的参数(重复次数n、帧频fps等)播放动画。

除了movie函数,MATLAB还提供了一个函数movie2avi,该函数能够在当前的工作目录下创建一个avi视频格式的动画文件。一般的调用格式:

movie2avi(fmat, filename)

相关文档
最新文档