基于matlab的光学薄膜特性分析,基于matlab的光学薄膜特性分析.doc
目录
1 技术指标1
2 基本原理1
2.1 单层光学薄膜1
2.2 多层光学薄膜及矩阵理论2
3 基于matlab的光学薄膜特性分析4
4 结论9
5 参考文献9
6 附录:基于matlab的光学薄膜特性分析源程序代码10
16
武汉理工大学《能力拓展训练》报告书
基于matlab的光学薄膜特性分析
1 技术指标
对光学薄膜的理论进行分析,从电磁理论出发分析单层膜和多层膜的反射和透射率特性;并分析各参数对其光学性能的影响;运用Matlab对单层介质薄膜和多层介质薄膜的光学特性进行仿真;编写可用于一般多层膜的图形用户界面,并利用该程序对几种典型的薄膜系统进行验证。
2 基本原理
光射到任何一个光学零件的表面上都要发生反射和折射,不同的光学系统对反射率和透射率有不同的要求.对于透射成像的光学系统,反射不仅降低了透过光学系统的能量,而且造成杂散光,降低系统的成像清晰度.而对于一个有多个镜片的光学系统,其反射损失更为可观.为了降低反射损失,需要在镜片上镀光学薄膜,是每个光学面的反射损失都降到约等于百分之一,甚至更小。
薄膜光学发展至今,已经形成一套比较完整的实用理论。本文将利用多光束的干涉理论和矩阵理论,并运用matlab对薄膜光学系统的光学性质做简要分析。
2.1 单层光学薄膜
折射率为的光学基底上镀上一层厚度为,折射率为的透明薄膜,就构成典型的单层光学薄膜结构。薄膜可以看成一块平行薄板,光在这个薄板上下表面发射和透射的光叠加将会发生多光束干涉。利用已有的结果,可得反射光叠加后的合震动的复振幅
(2-1-1)
式中,是薄膜表面上的反射振幅比,是下表面的反射振幅比,是两相邻光束之间的相位差
(2-1-2)
而反射率
(2-1-3)
且透射率和反射率的关系:。
2.2 多层光学薄膜及矩阵理论
图(a) 两个界面的多膜系统
下面根据电磁理论分析:
在界面1
(2-2-1)
由《电磁场与电磁波》H与E的关系得:,
取则
(2-2-2)
在界面2
(2-2-3)
在不考虑薄膜对光能的吸收时,,的关系如下:
(2-2-4)
平面波通过薄膜一次A,B两点的位相变化。
(2-2-5)
(2-2-6)
(2-2-7)
写成矩阵形式:
(2-2-8)
当膜系包含N层膜时,则有
(2-2-9)
整个膜系的特征矩阵。
令M的矩阵元为A,B,C,D即,则
(2-2-10)
膜系反射系数
(2-2-11)
膜系透射系数
(2-2-12)
反射率:,透射率:。
由两种不同介电常数()和厚度()的电磁材料所组成的一维周期性光学薄膜结构。利用传输矩阵计算光在介质薄膜。
图(b)一维周期性光学薄膜结构
本文中所选取的色散材料,如[11,12],LiF(模型中的A层)的折射率在范围内的关系为:
Si(模型中的B层)的折射率在同一波段为:
其中。
在本课程设计中取,则3.4770。
3 基于matlab的光学薄膜特性分析
matlab是一种以矩阵运算为基础的交互式程序语言,广泛应用于自动控制、数学运算、信号分析、航天工业和绘图等各行各业.本文使用Matlab计算膜系特征矩阵,进行数值的运算仿真研究与验证。
仿真模拟的光学特性matlab程序见附录。
图(c) 光学特性分析的GUI交互界面
图(d) 单膜反射率和透射率与入射波长的关系(正入射)
图(e) 单膜反射率和透射率与入射波长的关系(斜入射)
图(f) 多膜反射率和透射率与入射波长的关系(正入射)
图(g) 单膜反射率和透射率与入射波长的关系(斜入射)
图中,纵坐标表示反射率和透射率,其中,红实线表示反射率,蓝虚线表示透射率,二者之和等于1。横坐标则表示入射光的波长(um)。
从图中分别对比分析知,对于一个介质折射率和厚度固定等参数固定的薄膜系统,其反射率或透射率达到最大值的时候所对应的这一固定波长称为中心波长,当入射光偏离中心波长的时候,其反射率必定会相应的下降,因此,每一种具体的膜系,只对一定波长范围的光波才能有反射率。以上各图反射率最大值(接近于1)时所对应的波长范围称为反射带的宽度。
图(h)8层膜(偶数)系反射率和透射率与波长的关系
图(i)9层膜(奇数)系反射率和透射率与波长的关系
从上面两个图对比可知,在同一波长情况下,奇数层膜的反射率要比偶数层
反射率略高。这是因为,膜系第一层的折射率高于第二层折射率,如果膜系为奇数层,那么最后一层的折射率也是高反射率层。层数为时,。
犹豫,故可以获得更高的反射率。反之,膜系为偶数层时,达不到增加反射率的目的。
4 结论
由上述的计算公式可知,光学薄膜的特性计算在引入矩阵理论后成为一个相对简单的问题,只要给定每一层膜系的参数,多层膜就可以利用矩阵的连乘方便地求出在每一特定入射角和波长下的透射率、反射率等参数.许多计算机软件的出现,能方便进行自动数值计算,如matlab软件的应用,不仅能计算并保存数据,而且更好地调用资源,作图、仿真模拟使得研究清晰明了,易于操作理解,为光学薄膜的研究提供了有利的计算工具.因此,计算机软件的应用促进了光学薄膜的发展,它与传统的理论研究相辅相成,是理论应用与实践的有力保障,使光学薄膜的发展迈上了新的台阶.光学薄膜已经在光学技术发展的历史中创造了光辉的成绩,如今广泛地渗透到各个新型的科技领域.各种新型微结构的功能薄膜正在不断开发出来,并造福于人类.
5 参考文献
[1] 廖延彪.光学原理与应用.电子工业出版社.2006.10
[2] 蒙庆华,梁志铭,郑荣江. Matlab环境下多层光学薄膜的数值计算.广西师范学院学报.2010.09;27-03
6 附录:基于matlab的光学薄膜特性分析源程序代码
function varargout = untitled(varargin)
% UNTITLED M-file for untitled.fig
% UNTITLED, by itself, creates a new UNTITLED or raises the existing
% singleton*.
%
% H = UNTITLED returns the handle to a new UNTITLED or the handle to
% the existing singleton*.
%
% UNTITLED(CALLBACK,hObject,eventData,handles,...) calls the local
% function named CALLBACK in UNTITLED.M with the given input arguments.
%
% UNTITLED(Property,Value,...) creates a new UNTITLED or raises the
% existing singleton*. Starting from the left, property value pairs are
% applied to the GUI before untitled_OpeningFunction gets called. An
% unrecognized property name or invalid value makes property application
% stop. All inputs are passed to untitled_OpeningFcn via varargin.
%
% *See GUI Options on GUIDEs Tools menu. Choose "GUI allows only one
% instance to run (singleton)".
%
% See also: GUIDE, GUIDATA, GUIHANDLES
% Copyright 2002-2003 The MathWorks, Inc.
% Edit the above text to modify the response to help untitled
% Last Modified by GUIDE v2.5 25-Aug-2011 12:50:11
% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct(gui_Name, mfilename, ...
gui_Singleton, gui_Singleton, ...
gui_OpeningFcn, @untitled_OpeningFcn, ...
gui_OutputFcn, @untitled_OutputFcn, ...
gui_LayoutFcn, [] , ...
gui_Callback, []);
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT
% --- Executes just before untitled is made visible.
function untitled_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% varargin command line arguments to untitled (see VARARGIN)
% Choose default command line output for untitled
handles.output = hObject;
% Update handles structure
guidata(hObject, handles);
% UIWAIT makes untitled wait for user response (see UIRESUME)
% uiwait(handles.figure1);
% --- Outputs from this function are returned to the command line.
function varargout = untitled_OutputFcn(hObject, eventdata, handles)
% varargout cell array for returning output args (see VARARGOUT);
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Get default command line output from handles structure
varargout{1} = handles.output;
function edit1_Callback(hObject, eventdata, handles)
% hObject handle to edit1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,String) returns contents of edit1 as text
% str2double(get(hObject,String)) returns contents of edit1 as a double
input = str2num(get(hObject,String));
if (isempty(input))
set(hObject,String,0)
end
guidata(hObject, handles);
% --- Executes during object creation, after setting all properties.
function edit1_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc
set(hObject,BackgroundColor,white);
else
set(hObject,BackgroundColor,get(0,defaultUicontrolBackgroundColor));
end
function edit2_Callback(hObject, eventdata, handles)
% hObject handle to edit2 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,String) returns contents of edit2 as text
% str2double(get(hObject,String)) returns contents of edit2 as a double
input = str2num(get(hObject,String));
if (isempty(input))
set(hObject,String,0)
end
guidata(hObject, handles);
% --- Executes during object creation, after setting all properties.
function edit2_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit2 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc
set(hObject,BackgroundColor,white);
else
set(hObject,BackgroundColor,get(0,defaultUicontrolBackgroundColor));
end
function edit3_Callback(hObject, eventdata, handles)
% hObject handle to edit3 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,String) returns contents of edit3 as text
% str2double(get(hObject,String)) returns contents of edit3 as a double
input = str2num(get(hObject,String));
if (isempty(input))
set(hObject,String,0)
end
guidata(hObject, handles);
% --- Executes during object creation, after setting all properties.
function edit3_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit3 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc
set(hObject,BackgroundColor,white);
else
set(hObject,BackgroundColor,get(0,defaultUicontrolBackgroundColor));
end
function edit4_Callback(hObject, eventdata, handles)
% hObject handle to edit4 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,String) returns contents of edit4 as text
% str2double(get(hObject,String)) returns contents of edit4 as a double
input = str2num(get(hObject,String));
if (isempty(input))
set(hObject,String,0)
end
guidata(hObject, handles);
% --- Executes during object creation, after setting all properties.
function edit4_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit4 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc
set(hObject,BackgroundColor,white);
else
set(hObject,BackgroundColor,get(0,defaultUicontrolBackgroundColor));
end
function edit5_Callback(hObject, eventdata, handles)
% hObject handle to edit5 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,String) returns contents of edit5 as text
% str2double(get(hObject,String)) returns contents of edit5 as a double
input = str2num(get(hObject,String));
if (isempty(input))
set(hObject,String,0)
end
guidata(hObject, handles);
% --- Executes during object creation, after setting all properties.
function edit5_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit5 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc
set(hObject,BackgroundColor,white);
else
set(hObject,BackgroundColor,get(0,defaultUicontrolBackgroundColor));
end
function edit6_Callback(hObject, eventdata, handles)
% hObject handle to edit6 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,String) returns contents of edit6 as text
% str2double(get(hObject,String)) returns contents of edit6 as a double
input = str2num(get(hObject,String));
if (isempty(input))
set(hObject,String,0)
end
guidata(hObject, handles);
% --- Executes during object creation, after setting all properties.
function edit6_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit6 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc
set(hObject,BackgroundColor,white);
else
set(hObject,BackgroundColor,get(0,defaultUicontrolBackgroundColor));
end
% --- Executes on button press in pushbutton1.
function pushbutton1_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
%以下为计算模拟输出的主程序
n0=1;
n1 = get(handles.edit1,String);
n1=str2num(n1);
n2=get(handles.edit2,String);
n2=str2num(n2);
n=get(handles.edit6,String);
n=str2num(n);
theta1=get(handles.edit5,String);
theta1=str2num(theta1);
d1=get(handles.edit4,String);
d1=str2num(d1);
d1=d1*1e-6;
d2=get(handles.edit3,String);
d2=str2num(d2);
d2=d2*1e-6;
for lambda=1250:2350;
theta2=asin(n0*sin(theta1)/n1);
theta3=asin(n0*sin(theta2)/n2);
delta1=2*pi*n1*d1/cos(theta1)/lambda*1e9;
delta2=2*pi*n2*d2/cos(theta2)/lambda*1e9;
m=sqrt(144*pi^2*100);
eta0=n0*cos(theta1)/m;
eta1=n1*cos(theta2)/m;
eta2=n2*cos(theta3)/m;
M11=cos(delta1);
M12=-1i*sin(delta1)/eta1;
M13=-1i*eta1*sin(delta1);
M14=cos(delta1);
M1=[M11,M12;M13,M14];
M21=cos(delta2);
M22=-1i*sin(delta2)/eta2;
M23=-1i*eta2*sin(delta2);
M24=cos(delta2);
M2=[M21,M22;M23,M24];
M=M1*M2;
M=M^n;
A=M(1,1);
B=M(1,2);
C=M(2,1);
D=M(2,2);
r=(A*eta0+B*eta0^2-C-D*eta0)/(A*eta0+B*eta0^2+C+D*eta0);
R=r*r;
t=2*eta0/(A*eta0+B*eta0^2+C+D*eta0);
T=t*t;
s=lambda-1250+1;
k(1,s)=R;
g(1,s)=T;
end
lambda=1250:2350;
axes(handles.axes1);
plot(lambda,k,r,lambda,g,-.b);
guidata(hObject, handles);
% --- Executes on button press in pushbutton3.
function pushbutton3_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton3 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
value1=get(handles.edit1,string);
set(handles.edit1,string,);
value1=get(handles.edit2,string);
set(handles.edit2,string,);
value1=get(handles.edit6,string);
set(handles.edit6,string,);
value1=get(handles.edit3,string);
set(handles.edit3,string,);
value1=get(handles.edit4,string);
set(handles.edit4,string,);
value1=get(handles.edit5,string);
set(handles.edit5,string,);
注:此程序包含GUI的运用框架结构。
展开阅读全文
基于matlab的光学薄膜特性分析,基于matlab的光学薄膜特性分析.doc相关推荐
- 基于matlab的光学薄膜特性分析,基于matlab的光学薄膜特性分析
<基于matlab的光学薄膜特性分析>由会员分享,可在线阅读,更多相关<基于matlab的光学薄膜特性分析(17页珍藏版)>请在金锄头文库上搜索. 1.目录1 技术指标 .12 ...
- 《MATLAB 神经网络43个案例分析》:第25章 基于MIV的神经网络变量筛选----基于BP神经网络的变量筛选
<MATLAB 神经网络43个案例分析>:第25章 基于MIV的神经网络变量筛选----基于BP神经网络的变量筛选 1. 前言 2. MATLAB 仿真示例 3. 小结 1. 前言 < ...
- 《对冲基金建模与分析基于MATLAB》简介及PDF下载
转 <对冲基金建模与分析--基于MATLAB>简介及PDF下载 内容简介 本书是关于用MATLAB对对冲基金进行建模和分析的入门读物.在对对冲基金的基本概念.分类.相关工具和指标系统介绍的 ...
- 基于PAM调制的OFDM系统架构之讯号特点分析(matlab)
基于PAM调制的OFDM系统架构之讯号特点分析(matlab) 不同于基于QAM调制的OFDM系统,通过脉冲振幅调制(PAM)并经过埃尔米特对称处理的讯号本身的特性.讯号调制方面,采用PAM调制的讯号 ...
- ahp层次分析法matlab代码_Matlab数据分析实战,基于AHP高校食堂满意度调查分析
层次分析法(Analytical Hierachy Process,AHP)是匹兹堡大学T.L.Saaty教授在20世纪70年代初期提出对定性问题进行定量分析的一种渐变灵活的多准则决策方案. 其特点是 ...
- matlab时频分析工具箱安装_EEG时频分析介绍与实现(基于EEGLAB、NetStation与Analyzer2软件)...
本文首发在个人博客上(7988888.xyz),此文章中所有链接均通过博客进行访问. 我在很早之前有翻译过一篇通过小波变换来进行时频分析的文章,可参考<小波教程>.最近,我在油管上看到了E ...
- matlab统计所有股票分析,MATLAB金融算法分析实战:基于机器学习的股票量化分析...
MATLAB金融算法分析实战:基于机器学习的股票量化分析 作者:吴婷;余胜威 编著 出版日期:2017年07月 文件大小:32.24M 支持设备: ¥50.00在线试读 适用客户端: 言商书局 iPa ...
- 股票市场量化分析matlab,(特价书)MATLAB金融算法分析实战:基于机器学习的股票量化分析...
前言 在线交流,有问有答 第1篇 MATLAB常用算法应用设计 第1章 MATLAB入门与提高2 1.1 矩阵运算4 1.2 放大局部视图6 1.3 Monte Carlo方法7 1.4 金融工具箱绘 ...
- 切削力matlab数据处理,基于MATLAB的切削力测量实验数据的处理及分析
基于MATLAB 的切削力测量实验数据的处理及分析 卞化梅 , 牛小铁 , 陈金英 , 郭 勇 (北京工业职业技术学院 , 北京 100042) 摘 要 : 以曲面铣削加工实验数据的处理为例 ,介绍了 ...
最新文章
- 服务器产品选型与性价比图解
- oracle对比两列数据_oracle与mysql对同一张表 两列数据的某一字段进行值的交换
- (转) iPhone UI 开发的几点建议
- C# action,delegate,func的用法和区别
- java 如何让循环结束,跳过某个条件,跳出当前的多重嵌套循环
- 对接kafka_Kafka系列9:面试题是否有必要深入了解其背后的原理?我觉得应该刨根究底(上)...
- 平均月薪超过1万的北京人是这样上班的|大数据解读(视频)
- CentOS上 安装NodeJS
- python继承语法_python语法学习面向对象之继承
- 构造一个简单的神经网络,以DQN方式实现小游戏的自动控制
- Atitit 架构的原则attilax总结
- 宝塔linux架设手游,守望黎明架-linux手工端设教程
- java bytebuffer读取_Java NIO学习笔记之二-图解ByteBuffer
- HTML资产负债表和收入支出表(可动态更新)
- PDF文件如何转CAD格式?教你几个简单有效的方法
- linux开发板挂载nfs服务
- 淘宝广告数据分析实战!(附代码和100W数据源)
- 在计算机中360云盘如何删除文件,如何在360云盘中检索已删除的文件
- 周边pd是什么意思_韩国综艺里经常说的VJ、PD是什么意思
- html模仿 商城 静态页面,HTML+CSS简单实现凡客商城静态网页
热门文章
- cocos creator接入微信登陆sdk ios篇
- 2021年中考计算机考试,2021年中考这样改革,初一初二考生需提前了解!
- JavaMail API
- python处理PPOCRLabel标注的数据用于LPRNet与Yolo的训练
- 改成每天晚上锻炼身体
- 基于STM32和阿里云的环境检测系统设计
- jsp 按照学号查找学生_怎样做才可以用JSP实现只输入姓名或学号就可以进行查询...
- 大学计算机基础清华大学出版社 山东省高等学校教学改革项目,清华大学出版社-图书详情-《大学计算机基础(第2版)》...
- Swift 可选(Optionals)类型讲解
- 呕心沥血梳理C++新标准超好用的新特性(实战必备)