光学软件基础及应用——Matlab-2nd.ppt_第1页
光学软件基础及应用——Matlab-2nd.ppt_第2页
光学软件基础及应用——Matlab-2nd.ppt_第3页
光学软件基础及应用——Matlab-2nd.ppt_第4页
光学软件基础及应用——Matlab-2nd.ppt_第5页
已阅读5页,还剩80页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

光学软件基础及应用MATLAB,2010-2011上,安徽工业大学 光信息科学与技术 莫绪涛,2,MATLAB必须掌握的计算机语言之一,科学研究的强大辅助工具 数学运算:线性代数/微积分/概率统计 工程或生活中实际问题的解决工具,数学软件+专业工具库+综合开发平台,第一章 认识MATLAB,2010-2011上,安徽工业大学 光信息科学与技术 莫绪涛,4,1.1 MATLAB简介,美国MathWorks公司推出的科学及工程计算软件数学家-软件专家-各领域专家共同编写实现 MATRIX和LABORATORY的缩写-矩阵实验室,2010-2011上,安徽工业大学 光信息科学与技术 莫绪涛,5,1.2 MATLAB的产生和发展,1980年产生美国新墨西哥州大学计算机系主任Cleve Moler为解决“线性代数”课程的矩阵运算问题而开发的接口程序 1983年春天工程师John Little与Moler、Steve Bangert一起开发了第二代专业版MATLAB(用C语言编写实现) 1984年MathWorks公司成立,2010-2011上,安徽工业大学 光信息科学与技术 莫绪涛,6,强大的科学计算、数据处理能力 基本的计算、科研和工程计算的最新研究成果 出色的图形处理与显示能力 功能强大的模块集和专业工具箱 符号运算、优化、图像处理、偏微分方程工具箱 可编程解决复杂问题M文件 丰富的程序接口C语言、ZEMAX 丰富的联机帮助系统,1.3 MATLAB的功能,2010-2011上,安徽工业大学 光信息科学与技术 莫绪涛,7,1.4 MATLAB的软件界面,命令窗口,历史记录窗口,工作变量空间,2010-2011上,安徽工业大学 光信息科学与技术 莫绪涛,8,1.5 MATLAB的软件显示调整,第二章 MATLAB的基本运算,矩阵为运算单元,2010-2011上,安徽工业大学 光信息科学与技术 莫绪涛,10,2.1 MATLAB的基本使用,直接在命令窗口输入要计算的内容 MATLAB语句形式为: 变量 = 表达式 无需事先定义变量 回车后语句执行,窗口显示语句执行结果,2010-2011上,安徽工业大学 光信息科学与技术 莫绪涛,11,2.1 MATLAB的基本使用,光标闪烁等待输入命令,2010-2011上,安徽工业大学 光信息科学与技术 莫绪涛,12,常用的命令及其功能,clc 擦去命令窗口内容 clear 消除工作空间所有变量 clear 变量名 消除指定的变量 help 命令名 查询所列命令的帮助信息 调用上一行命令 Ctrl + C 中断程序运行,2010-2011上,安徽工业大学 光信息科学与技术 莫绪涛,13,2.2 MATLAB的变量,变量命名规则 变量区分字母大小写 名字不能超过31个字符,超过部分被忽略 变量必须以英文字母开头,之后可以使用字母、数字、下划线,但不能使用空格和标点符号,2010-2011上,安徽工业大学 光信息科学与技术 莫绪涛,14,2.2 MATLAB的特殊变量常量,编写函数时使用,复数计算时使用,2010-2011上,安徽工业大学 光信息科学与技术 莫绪涛,15,2.2 MATLAB的变量显示格式,MATLAB中所有的量为双精度浮点数 改变显示格式命令:format 格式 常用的格式有 bank (2个十进制位) hex (十六进制) short (缺省) short e (5位加指数) long (16位) long e (16位加指数) rat (有理数近似) 改变显示格式并不改变变量本身,2010-2011上,安徽工业大学 光信息科学与技术 莫绪涛,16,2.3 MATLAB的基本矩阵运算,矩阵的直接输入创建:和数组的格式相似 以“ ”开始,以“ ”结束 每一行元素结束用行结束符号(分号或回车)分隔 同一行元素之间用元素分隔符号(空格或 , )分隔 举例:创建23的矩阵,第一行为1/2/3,第二行为4/5/6,2010-2011上,安徽工业大学 光信息科学与技术 莫绪涛,17,2.3 MATLAB的基本矩阵运算,对矩阵元素的访问 单个元素的访问:a(2,1) = 0 整行元素的访问:a(2,:) = 0 9 8 7 整列元素的访问:a(:,3) = 3; 8; 6 某块元素的访问:a(2:3, 3:4) = 8 7;6 5 注意点 下标从1开始 冒号“ : ”的使用,2010-2011上,安徽工业大学 光信息科学与技术 莫绪涛,18,2.3 MATLAB的基本矩阵运算,矩阵按列编址 元素访问的另一种方式 * 获取矩阵大小函数size: size(a)=3 4,编址规则:,对mn矩阵而言: a(i,j)=a(i+(j-1)*m),2010-2011上,安徽工业大学 光信息科学与技术 莫绪涛,19,2.3 MATLAB的基本矩阵运算,特殊行向量创建方法 线性等间距初值:步长:终值 函数linspace linspace(x1,x2) linspace(x1,x2,N) 函数logspace,2010-2011上,安徽工业大学 光信息科学与技术 莫绪涛,20,2.3 MATLAB的基本矩阵运算,矩阵创建的其他方法 现有矩阵增加或提取元素 读取数据文件,如TXT、Excel、Mat文件 利用特殊矩阵生成函数 全0矩阵:zeros() 全1矩阵:ones() 单位矩阵:eye(),2010-2011上,安徽工业大学 光信息科学与技术 莫绪涛,21,2.3 MATLAB的基本矩阵运算,矩阵的基本运算 四则运算:+ - * / 点乘(点除):.* ./ . 矩阵乘方: 矩阵元素乘方: . 矩阵的转置: 注意点 运算对象为矩阵 元素运算勿忘使用“点”,2010-2011上,安徽工业大学 光信息科学与技术 莫绪涛,22,2.4 MATLAB的矩阵运算函数,矩阵元素的运算函数(Array Operation) abs、sqrt、sin、cos函数可以在矩阵上直接使用,只不过对矩阵的每个元素进行处理, sqrt(a) ans = 1.0000 1.4142 1.7321 2.0000 2.2361 2.4495, a=1 2 3; 4 5 6 a = 1 2 3 4 5 6,2010-2011上,安徽工业大学 光信息科学与技术 莫绪涛,23,2.4 MATLAB的矩阵元素运算函数,2010-2011上,安徽工业大学 光信息科学与技术 莫绪涛,24,2.4 MATLAB的矩阵元素运算函数,2010-2011上,安徽工业大学 光信息科学与技术 莫绪涛,25,2.4 MATLAB的矩阵元素运算函数,2010-2011上,安徽工业大学 光信息科学与技术 莫绪涛,26,2.5 MATLAB关系运算 =,关系运算符 任何非零数值都为真 (1) 用于流程控制 举例:,2010-2011上,安徽工业大学 光信息科学与技术 莫绪涛,27,2.5 MATLAB逻辑运算,逻辑运算符 用于流程控制 位方式的逻辑运算函数,第三章 MATLAB的基本绘图,一图胜万语,EDOF CPM 3D-MTF,2010-2011上,安徽工业大学 光信息科学与技术 莫绪涛,29,3.1 MATLAB的绘图工作空间绘图,2010-2011上,安徽工业大学 光信息科学与技术 莫绪涛,30,3.2 MATLAB的绘图二维绘图函数,所有绘制二维图形的命令 help graph2d 充分利用网络和 MATLAB帮助文件 学习使用MATLAB函数,2010-2011上,安徽工业大学 光信息科学与技术 莫绪涛,31,3.2 MATLAB的绘图二维绘图函数,基本绘图函数为 plot(x1,y1, LineSpec1,x2,y2, LineSpec2,) 函数说明: x1,y1分别为x轴和y轴坐标值 LineSpec1为曲线特性选项参数,如曲线的颜色、线型、标识符号等,用单引号括起来 以逐点折线相连的方式绘制二维图形 在MATLAB Help系统中熟悉Plot命令,2010-2011上,安徽工业大学 光信息科学与技术 莫绪涛,32,3.2 MATLAB的绘图二维绘图函数,绘图举例 曲线特性参数的设置方法参照帮助系统,x=0:0.1*pi:2*pi; y=sin(x); z=cos(x); plot(x,y,-bo,x,z,:ms),2010-2011上,安徽工业大学 光信息科学与技术 莫绪涛,33,3.2 MATLAB的绘图二维绘图函数,LineSpec选项,2010-2011上,安徽工业大学 光信息科学与技术 莫绪涛,34,3.2 MATLAB的绘图二维绘图函数,图形标注函数 xlabel和ylabel:x轴和y轴名称标注 title:图形名称标注 text: 图形中文字标注 gtext:图形中文字标注(用鼠标确定放置位置) legend:图形中各曲线标注,2010-2011上,安徽工业大学 光信息科学与技术 莫绪涛,35,3.2 MATLAB的绘图二维绘图函数,图形标注举例 注意转义字符的输入,xlabel(-pi leq Theta leq pi) ylabel(sin(Theta) title(Plot of sin(Theta) text(-pi/4,sin(-pi/4), leftarrow sin(-pidiv4), HorizontalAlignment,left),xlabel,ylabel,title,text,2010-2011上,安徽工业大学 光信息科学与技术 莫绪涛,36,3.2 MATLAB的绘图二维绘图函数,其他重要相关命令(对照help自学) axes:设置坐标轴 hold :hold on 保持当前绘图窗口继续做图 grid:grid on/off 打开/关闭图形网格 figure:打开/创建图形窗口,如figure (4) subplot(m,n,p): 将绘图窗口分成mn个子区域,在第p个区域绘制图形; close:关闭当前图形窗口 其他二维绘图函数:fplot、ezplot、,2010-2011上,安徽工业大学 光信息科学与技术 莫绪涛,37,3.2 MATLAB的绘图步骤总结,准备数据 设置当前绘图区 绘制图形 设置曲线特征和标记特征 设置坐标轴和网格线属性 标注图形 保存和导出图形,2010-2011上,安徽工业大学 光信息科学与技术 莫绪涛,38,3.3 MATLAB的绘图三维绘图函数,所有绘制三维图形的命令 help graph3d 三维图形的特征控制 Color control Lighting Color maps Transparency Axis control Viewpoint control Camera control,2010-2011上,安徽工业大学 光信息科学与技术 莫绪涛,39,3.3 MATLAB的绘图三维曲线绘制,三维曲线绘制函数为 plot3(x1,y1, z1, LineSpec1,x2,y2, z2, LineSpec2,) 函数说明: x1, y1, z1分别为x轴、y轴和z轴坐标值 LineSpec1为曲线特性选项参数,同plot中参数 以逐点折线相连的方式绘制三维图形,2010-2011上,安徽工业大学 光信息科学与技术 莫绪涛,40,3.3 MATLAB的绘图三维曲线绘制,绘图举例,x=0:0.1*pi:10*pi; y=sin(x); z=cos(x); plot3(x,y,z,-b) grid on xlabel(x); ylabel(sinx); zlabel(cosx); title(Example 3D curve),2010-2011上,安徽工业大学 光信息科学与技术 莫绪涛,41,3.3 MATLAB的绘图三维网格曲面绘制,三维网格曲面绘制函数为 mesh (X,Y,Z, C) 函数说明: X,Y,Z都是矩阵 参数C表示网格曲面颜色分布 创建网格曲面,2010-2011上,安徽工业大学 光信息科学与技术 莫绪涛,42,3.3 MATLAB的绘图三维网格曲面绘制,绘图举例,x=-2:0.1:2; y=-3:0.1:3; X,Y=meshgrid(x,y); Z=X.2+Y.2; mesh(X,Y,Z) xlabel(x);ylabel(y);zlabel(z),2010-2011上,安徽工业大学 光信息科学与技术 莫绪涛,43,3.3 MATLAB的绘图meshgrid函数应用, X,Y = meshgrid(1:3,4:7),Y = 4 4 4 5 5 5 6 6 6 7 7 7,X = 1 2 3 1 2 3 1 2 3 1 2 3,(x,y)= (1,4) (2,4) (3,4) (1,5) (2,5) (3,5) (1,6) (2,6) (3,6) (1,7) (2,7) (3,7),f,2010-2011上,安徽工业大学 光信息科学与技术 莫绪涛,44,3.3 MATLAB的绘图三维阴影曲面绘制,三维阴影曲面绘制函数为 surf (X,Y,Z, C) 函数说明: X,Y,Z都是矩阵 参数C表示网格曲面颜色分布 创建阴影曲面,2010-2011上,安徽工业大学 光信息科学与技术 莫绪涛,45,3.3 MATLAB的绘图三维阴影曲面绘制,绘图举例,x=-2:0.1:2; y=-3:0.1:3; X,Y=meshgrid(x,y); Z=X.2+Y.2; surf(X,Y,Z) xlabel(x);ylabel(y);zlabel(z),2010-2011上,安徽工业大学 光信息科学与技术 莫绪涛,46,3.3 MATLAB绘图网格和阴影曲面对比,网格曲面,阴影曲面,网格曲面的网格是彩色,并且根据z值改变; 阴影曲面的网格是黑色,网格区域内用颜色填充;,2010-2011上,安徽工业大学 光信息科学与技术 莫绪涛,47,3.4 MATLAB绘图其他图形绘制,直方图 hist 柱状图 bar 面积图 area 饼图 pie 火柴杆图 stem 等高线图 contour 向量图 quiver ,第四章 MATLAB的编程,通过编程 解决实际问题,语言是工具 思路最重要,2010-2011上,安徽工业大学 光信息科学与技术 莫绪涛,49,4.1 MATLAB的编程介绍,M文件编程:除了在命令窗口输入命令执行外,还可以向 C 语言一样采用编程方式;,文件名后缀为.m,2010-2011上,安徽工业大学 光信息科学与技术 莫绪涛,50,4.1 MATLAB的编程介绍,M文件创建及M文件编辑器认识,2010-2011上,安徽工业大学 光信息科学与技术 莫绪涛,51,4.1 MATLAB的编程介绍,M文件分类 脚本(命令)文件:只是一些命令行的组合,其中的所有变量也成为工作变量空间的一部分。 函数文件:单独功能的代码块,需要接受参数输入和输出,函数M文件具有独立的内部变量空间。 MATLAB提供的大部分函数都用函数文件实现。,2010-2011上,安徽工业大学 光信息科学与技术 莫绪涛,52,4.2 MATLAB的编程脚本文件编程,脚本文件 注释语句 消除命令 定义变量 功能实现 结果显示,2010-2011上,安徽工业大学 光信息科学与技术 莫绪涛,53,4.2 MATLAB的编程脚本文件编程,脚本文件的运行 将脚本文件保存为*.m文件(上例为primeNumber.m) 方式一:直接在M文件编辑器中点击“RUN”按钮 方式二:在MATLAB命令窗口输入文件名并回车,2010-2011上,安徽工业大学 光信息科学与技术 莫绪涛,54,4.2 MATLAB的编程脚本文件编程,脚本文件编程提示: 用clear 、close all等语句开始,清除原有的变量和图形 注释行以%号开始,增加程序的可读性 如果不想显示结果,语句结尾用分号,2010-2011上,安徽工业大学 光信息科学与技术 莫绪涛,55,4.3 MATLAB的编程函数文件编程,函数文件 函数声明 帮助文字 函数实现 注释部分,2010-2011上,安徽工业大学 光信息科学与技术 莫绪涛,56,4.3 MATLAB的编程函数文件编程,函数文件的使用方法 在脚本文件中进行调用 直接在命令窗口进行调用,2010-2011上,安徽工业大学 光信息科学与技术 莫绪涛,57,4.3 MATLAB的编程函数文件编程,函数文件编程提示: 函数文件由function起头,后面跟函数名; 函数名必须与文件名相同 输出变量多于一个时,要用方括号, 举例:x,y,z=function fun(a,b,c),2010-2011上,安徽工业大学 光信息科学与技术 莫绪涛,58,4.4 MATLAB的编程流程控制语句,分支控制语句 if结构 switch结构 循环控制语句 for循环 while循环 continue语句 break语句 程序终止语句:return语句,2010-2011上,安徽工业大学 光信息科学与技术 莫绪涛,59,4.4.1 MATLAB的编程分支控制-if结构,if-else结构:,if logical_expression1 commands1 elseif logical_expression2 commands2 elseif else commands end,和C语言原理一致 注意语法格式的差异 elseif和else语句为可选语句,2010-2011上,安徽工业大学 光信息科学与技术 莫绪涛,60,4.4.1 MATLAB的编程分支控制-switch结构,switch结构:,switch 表达式(标量或字符串) case 值1 语句组A case 值2 语句组B . otherwise 语句组N end,otherwise语句为可选语句 和C语言的重要语法区别:每一个case语句后面不需要break语句跳出;,2010-2011上,安徽工业大学 光信息科学与技术 莫绪涛,61,4.4.2 MATLAB的编程循环控制-for循环,for循环:一般用于已知循环次数的情况,for index=start:increment:end command end,index为循环变量,increment为增量,默认值为1 index可以赋值为数组A,第n次循环时,index被赋值为A(:,n),即A的第n列元素 MATLAB中循环效率很低,尽量充分使用数组结构,2010-2011上,安徽工业大学 光信息科学与技术 莫绪涛,62,4.4.2 MATLAB的编程循环控制-while循环,while循环:一般用于已知循环结束条件情况,while expression commonds end,表达式expression为真,就执行语句,直至结果为假,2010-2011上,安徽工业大学 光信息科学与技术 莫绪涛,63,4.4.3 MATLAB的编程其他控制语句,continue语句 用在循环中,表示本次循环不再继续向下执行,进入下一次循环; break语句 退出循环 return语句 终止程序运行,用于需要立即退出的特殊情况等,2010-2011上,安徽工业大学 光信息科学与技术 莫绪涛,64,4.5 MATLAB的编程交互命令,echo on/off: 在执行M文件每行程序前先显示其内容 keyboard: 程序执行到此暂停,在屏幕上显示字符K,用户可以在命令窗进行任何操作,最后键入字符串return,恢复运行原来的程序。 input (提示符) : 程序执行到此暂停,屏幕显示引号中的字符串,要求用户输入数据。数据输入后,程序继续运行。举例:N=input(N=); c (control-c) : 强行停止程序运行的命令,2010-2011上,安徽工业大学 光信息科学与技术 莫绪涛,65,4.6 MATLAB的编程举例光线追迹,例:用MATLAB编程作图分析不同颜色的平行光轴的光线通过平凸透镜聚焦的光路情况。,中心厚度为3mm 凸面曲率半径为100mm,波长 折射率 480.0 - 1.523-蓝色 550.0 - 1.519-绿色 632.8 - 1.515-红色,2010-2011上,安徽工业大学 光信息科学与技术 莫绪涛,66,4.6 MATLAB的编程举例光线追迹,光学分析 以球心为坐标原点,1.光线经过透镜的第一个面后方向不变 2.光线经过透镜第二个面时发生折射:,假设平行入射光距离光轴的距离为h 入射角为: 折射定律: 光线在透镜中经过的距离为:,2010-2011上,安徽工业大学 光信息科学与技术 莫绪涛,67,4.6 MATLAB的编程举例光线追迹,编程思路 绘制平凸透镜 绘制平面:确定X和Y数组用plot命令实现 绘制凸面:直接用fplot命令绘制 绘制多条平行光线通过透镜前后的直线 透镜曲面前的光线:plot 经过透镜曲面后的折射光线:plot,2010-2011上,安徽工业大学 光信息科学与技术 莫绪涛,68,4.6 MATLAB的编程举例光线追迹,光线追迹部分编程要考虑的内容 入射光线的波长可以改变 入射光线的视场范围可以改变 要绘制的光线的数目可以调整 绘制的光线的颜色根据波长不同可以进行设置 光线追迹设置成函数 raysPlot(DL,DH,ND,R,d,n,str) DL/DH:确定考察的光线的范围; ND:光线数目设置 n:入射光线波长所对应的折射率 str:设置光线绘制的特性,类似于plot中的参数设置,2010-2011上,安徽工业大学 光信息科学与技术 莫绪涛,69,4.6 MATLAB的编程举例光线追迹,程序模块实现 编写绘制平凸透镜的函数,参数为R,d 编写光线经过平凸透镜前后光路绘制的函数 主程序中根据实际需要调用前面编写的两个函数,2010-2011上,安徽工业大学 光信息科学与技术 莫绪涛,70,2010-2011上,安徽工业大学 光信息科学与技术 莫绪涛,71,4.6 MATLAB的编程举例绘制透镜,2010-2011上,安徽工业大学 光信息科学与技术 莫绪涛,72,2010-2011上,安徽工业大学 光信息科学与技术 莫绪涛,73,2010-2011上,安徽工业大学 光信息科学与技术 莫绪涛,74,4.6 MATLAB的编程举例-结果,2010-2011上,安徽工业大学 光信息科学与技术 莫绪涛,75,4.7 MATLAB的编程提示,程序不是一遍就写好的,是多次不断修改、优化得到的; 代码编写过程中要不断进行代码调试和验证; 编程之前一定要理清代码编写的大的思路;,第五章 MATLAB的符号运算,2010-2011上,安徽工业大学 光信息科学与技术 莫绪涛,77,5.1 MATLAB的符号运算介绍,符号数学工具箱:Symbolic Math Toolbox 符号数学工具箱对字符串进行符号分析,不是基于数组的数值分析 符号数学工

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论