实验注意事项(必读)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编程语言。