光学软件基础及应用-Matlab-2nd.ppt
光学软件基础及应用光学软件基础及应用MATLAB2010-2011上1安徽工业大学 光信息科学与技术 莫绪涛MATLAB必须掌握的计算机语言之一必须掌握的计算机语言之一o科学研究的强大辅助工具科学研究的强大辅助工具o数学运算:线性代数数学运算:线性代数/微积分微积分/概率统计概率统计o工程或生活中实际问题的解决工具工程或生活中实际问题的解决工具2010-2011上2安徽工业大学 光信息科学与技术 莫绪涛第一章第一章 认识认识MATLAB2010-2011上3安徽工业大学 光信息科学与技术 莫绪涛1.1 MATLAB简介简介o美国美国MathWorks公司推出的科学及工程计算公司推出的科学及工程计算软件软件数学家数学家-软件专家软件专家-各领域专家各领域专家共同共同编写实现编写实现oMATRIX和和LABORATORY的缩写的缩写-矩阵实验室矩阵实验室2010-2011上4安徽工业大学 光信息科学与技术 莫绪涛1.2 MATLAB的产生和发展的产生和发展o1980年产生年产生美国新墨西哥州大学计算机系美国新墨西哥州大学计算机系主任主任Cleve Moler为解决为解决“线性代数线性代数”课程的矩课程的矩阵运算问题而开发的接口程序阵运算问题而开发的接口程序o1983年春天年春天工程师工程师John Little与与Moler、Steve Bangert一起开发了第二代专业版一起开发了第二代专业版MATLAB(用(用C语言编写实现)语言编写实现)o1984年年MathWorks公司成立公司成立2010-2011上5安徽工业大学 光信息科学与技术 莫绪涛o强大的强大的科学计算科学计算、数据处理能力、数据处理能力n基本的计算、科研和工程计算的最新研究成果基本的计算、科研和工程计算的最新研究成果o出色的出色的图形图形处理与显示能力处理与显示能力o功能强大的模块集和功能强大的模块集和专业工具箱专业工具箱n符号运算、优化、图像处理、偏微分方程工具箱符号运算、优化、图像处理、偏微分方程工具箱o可编程可编程解决复杂问题解决复杂问题M文件文件o丰富的丰富的程序接口程序接口C语言、语言、ZEMAXo丰富的丰富的联机帮助系统联机帮助系统1.3 MATLAB的功能的功能2010-2011上6安徽工业大学 光信息科学与技术 莫绪涛1.4 MATLAB的软件界面的软件界面命令窗口命令窗口历史记录窗口历史记录窗口工作变量空间工作变量空间2010-2011上7安徽工业大学 光信息科学与技术 莫绪涛1.5 MATLAB的软件显示调整的软件显示调整改成自己喜欢的字体改成自己喜欢的字体2010-2011上8安徽工业大学 光信息科学与技术 莫绪涛第二章第二章 MATLAB的基本运算的基本运算2010-2011上9安徽工业大学 光信息科学与技术 莫绪涛2.1 MATLAB的基本使用的基本使用o直接在命令窗口输入要计算的内容直接在命令窗口输入要计算的内容oMATLAB语句形式为语句形式为:变量变量=表达式表达式n无需事先定义变量无需事先定义变量o回车后语句执行,窗口显示语句执行结果回车后语句执行,窗口显示语句执行结果2010-2011上10安徽工业大学 光信息科学与技术 莫绪涛2.1 MATLAB的基本使用的基本使用光标闪烁等待输入命令光标闪烁等待输入命令2010-2011上11安徽工业大学 光信息科学与技术 莫绪涛常用的命令及其功能常用的命令及其功能oclc 擦去命令窗口内容擦去命令窗口内容oclear 消除工作空间所有变量消除工作空间所有变量oclear 变量名变量名 消除指定的变量消除指定的变量ohelp 命令名命令名 查询所列命令的帮助信息查询所列命令的帮助信息o 调用上一行命令调用上一行命令oCtrl+C 中断程序运行中断程序运行2010-2011上12安徽工业大学 光信息科学与技术 莫绪涛2.2 MATLAB的变量的变量o变量命名规则变量命名规则n变量变量区分字母大小写区分字母大小写n名字不能超过名字不能超过3131个字符,超过部分被忽略个字符,超过部分被忽略n变量必须以英文字母开头,之后可以使用字母、变量必须以英文字母开头,之后可以使用字母、数字、下划线,但数字、下划线,但不能使用空格和标点符号不能使用空格和标点符号2010-2011上13安徽工业大学 光信息科学与技术 莫绪涛2.2 MATLAB的特殊变量的特殊变量常量常量特殊变量特殊变量 取值取值 ans 用于结果的缺省变量名用于结果的缺省变量名 pi 圆周率圆周率 eps 计算机的最小数计算机的最小数 inf 无穷大无穷大 如如 1/0 nan 不定值不定值0/0 i 或者或者 j i=j=1-nargin 函数的输入变量数目函数的输入变量数目 nargout 函数的输出变量数目函数的输出变量数目 realmin 最小的可用正实数最小的可用正实数 realmax 最大的可用正实数最大的可用正实数 编写函数时使用编写函数时使用复数计算时使用复数计算时使用2010-2011上14安徽工业大学 光信息科学与技术 莫绪涛2.2 MATLAB的变量显示格式的变量显示格式oMATLAB中所有的量为双精度浮点数中所有的量为双精度浮点数o改变显示格式命令:改变显示格式命令:format 格式格式n常用的格式有常用的格式有obank(2个十进制位个十进制位)hex(十六进制十六进制)oshort(缺省缺省)short e(5位加指数位加指数)olong (16位位)long e (16位加指数位加指数)orat(有理数近似有理数近似)o改变显示格式并不改变变量本身改变显示格式并不改变变量本身2010-2011上15安徽工业大学 光信息科学与技术 莫绪涛2.3 MATLAB的基本矩阵运算的基本矩阵运算o矩阵的直接输入创建:和数组的格式相似矩阵的直接输入创建:和数组的格式相似n以以“”开始,以开始,以“”结束结束n每一行元素结束每一行元素结束用行结束符号(分号或回车)分隔用行结束符号(分号或回车)分隔n同一行元素之间同一行元素之间用元素分隔符号(空格或用元素分隔符号(空格或,)分隔)分隔举例举例:创建:创建23的矩阵,第一行为的矩阵,第一行为1/2/3,第二行为,第二行为4/5/6 a=1 2 3;4 5 6a=1 2 3 4 5 6空格空格+分号分号 a=1,2,34,5,6a=1 2 3 4 5 6逗号逗号+回车回车2010-2011上16安徽工业大学 光信息科学与技术 莫绪涛2.3 MATLAB的基本矩阵运算的基本矩阵运算o对矩阵元素的访问对矩阵元素的访问n单个元素的访问:单个元素的访问:a(2,1)=0n整行元素的访问:整行元素的访问:a(2,:)=0 9 8 7n整列元素的访问:整列元素的访问:a(:,3)=3;8;6n某块元素的访问:某块元素的访问:a(2:3,3:4)=8 7;6 5o注意点注意点n下标从下标从1开始开始n冒号冒号“:”的使用的使用2010-2011上17安徽工业大学 光信息科学与技术 莫绪涛2.3 MATLAB的基本矩阵运算的基本矩阵运算o矩阵矩阵按列编址按列编址o元素访问的另一种方式元素访问的另一种方式*获取矩阵大小函数获取矩阵大小函数size:size(a)=3 4147102581136912编址规则:编址规则:a(10)=4a(8)=8对对mn矩阵而言矩阵而言:a(i,j)=a(i+(j-1)*m)2010-2011上18安徽工业大学 光信息科学与技术 莫绪涛2.3 MATLAB的基本矩阵运算的基本矩阵运算o特殊行向量创建方法特殊行向量创建方法n线性等间距线性等间距初值初值:步长步长:终值终值n函数函数linspaceolinspace(x1,x2)olinspace(x1,x2,N)n函数函数logspace2010-2011上19安徽工业大学 光信息科学与技术 莫绪涛2.3 MATLAB的基本矩阵运算的基本矩阵运算o矩阵创建的其他方法矩阵创建的其他方法n现有矩阵增加或提取元素现有矩阵增加或提取元素n读取数据文件,如读取数据文件,如TXT、Excel、Mat文件文件n利用特殊矩阵生成函数利用特殊矩阵生成函数o全全0矩阵:矩阵:zeros()o全全1矩阵:矩阵:ones()o单位矩阵:单位矩阵:eye()2010-2011上20安徽工业大学 光信息科学与技术 莫绪涛2.3 MATLAB的基本矩阵运算的基本矩阵运算o矩阵的基本运算矩阵的基本运算n四则运算:四则运算:+-*/n点乘点乘(点除点除):.*./.n矩阵乘方矩阵乘方:n矩阵矩阵元素乘方元素乘方:.n矩阵的转置矩阵的转置:o注意点注意点n运算对象为矩阵运算对象为矩阵n元素运算勿忘使用元素运算勿忘使用“点点”矩阵左除矩阵左除/右除运算右除运算矩阵点乘除运算矩阵点乘除运算2010-2011上21安徽工业大学 光信息科学与技术 莫绪涛2.4 MATLAB的矩阵运算函数的矩阵运算函数o矩阵元素的运算函数(矩阵元素的运算函数(Array Operation)nabs、sqrt、sin、cos函数可以在矩阵上直接使用,函数可以在矩阵上直接使用,只不过只不过对矩阵的每个元素对矩阵的每个元素进行处理进行处理 sqrt(a)ans=1.0000 1.4142 1.7321 2.0000 2.2361 2.4495 a=1 2 3;4 5 6a=1 2 3 4 5 62010-2011上22安徽工业大学 光信息科学与技术 莫绪涛2.4 MATLAB的矩阵元素运算函数的矩阵元素运算函数函数名函数名数学表达数学表达Matlab函数命令函数命令幂函数幂函数x.asqrt(x)=x.(1/2)指数函数指数函数a.xexp(x)对数函数对数函数log(x)log2(x)log10(x)2010-2011上23安徽工业大学 光信息科学与技术 莫绪涛2.4 MATLAB的矩阵元素运算函数的矩阵元素运算函数函数名函数名解释解释Matlab函数命令函数命令 三三 角角 函函 数数sin(x)cos(x)tan(x)cot(x)sec(x)csc(x)2010-2011上24安徽工业大学 光信息科学与技术 莫绪涛2.4 MATLAB的矩阵元素运算函数的矩阵元素运算函数函数名函数名解释解释Matlab函数命令函数命令反反三三角角函函数数asin(x)acos(x)atan(x)acot(x)asec(x)acsc(x)绝对值函数绝对值函数abs(x)2010-2011上25安徽工业大学 光信息科学与技术 莫绪涛2.5 MATLAB关系运算关系运算 =o关系运算符关系运算符n任何非零数值都为真任何非零数值都为真(1)n用于流程控制用于流程控制o举例举例:数学关系数学关系运算符运算符小于小于小于或等于小于或等于大于或等于大于或等于=等于等于=不等于不等于=2010-2011上26安徽工业大学 光信息科学与技术 莫绪涛2.5 MATLAB逻辑运算逻辑运算o逻辑运算符逻辑运算符n用于流程控制用于流程控制o位方式的逻辑运算函数位方式的逻辑运算函数逻辑关系逻辑关系运算符运算符与与&或或|非非异或异或xor位方式位方式-与与bitand位方式位方式-或或bitor位方式位方式-异或异或bitxor位比较运算位比较运算bitcmp移位运算移位运算bitshift2010-2011上27安徽工业大学 光信息科学与技术 莫绪涛第三章第三章 MATLAB的基本绘图的基本绘图EDOF CPM 3D-MTF2010-2011上28安徽工业大学 光信息科学与技术 莫绪涛3.1 MATLAB的绘图的绘图工作空间绘图工作空间绘图2010-2011上29安徽工业大学 光信息科学与技术 莫绪涛3.2 MATLAB的绘图的绘图二维绘图函数二维绘图函数o所有绘制二维图形的命令所有绘制二维图形的命令nhelp graph2d 充分利用充分利用网络网络和和MATLAB帮助文件帮助文件学习使用学习使用MATLAB函数函数2010-2011上30安徽工业大学 光信息科学与技术 莫绪涛3.2 MATLAB的绘图的绘图二维绘图函数二维绘图函数o基本绘图函数为基本绘图函数为nplot(x1,y1,LineSpec1,x2,y2,LineSpec2,)n函数说明:函数说明:ox1,y1分别为分别为x轴和轴和y轴坐标值轴坐标值oLineSpec1为曲线特性选项参数,如曲线的颜色、为曲线特性选项参数,如曲线的颜色、线型、标识符号等,用单引号括起来线型、标识符号等,用单引号括起来o以逐点折线相连的方式绘制二维图形以逐点折线相连的方式绘制二维图形o在在MATLAB Help系统中熟悉系统中熟悉Plot命令命令2010-2011上31安徽工业大学 光信息科学与技术 莫绪涛3.2 MATLAB的绘图的绘图二维绘图函数二维绘图函数o绘图举例绘图举例o曲线特性参数的设置方法曲线特性参数的设置方法参照帮助系统参照帮助系统x=0:0.1*pi:2*pi;y=sin(x);z=cos(x);plot(x,y,-bo,x,z,:ms)2010-2011上32安徽工业大学 光信息科学与技术 莫绪涛3.2 MATLAB的绘图的绘图二维绘图函数二维绘图函数oLineSpec选项选项2010-2011上33安徽工业大学 光信息科学与技术 莫绪涛3.2 MATLAB的绘图的绘图二维绘图函数二维绘图函数o图形标注函数图形标注函数nxlabel和和ylabel:x轴和轴和y轴名称标注轴名称标注ntitle:图形名称标注:图形名称标注ntext:图形中文字标注图形中文字标注ngtext:图形中文字标注(用鼠标确定放置位置):图形中文字标注(用鼠标确定放置位置)nlegend:图形中各曲线标注:图形中各曲线标注2010-2011上34安徽工业大学 光信息科学与技术 莫绪涛3.2 MATLAB的绘图的绘图二维绘图函数二维绘图函数o图形标注举例图形标注举例n注意转义字符的输入注意转义字符的输入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)xlabelylabeltitletext2010-2011上35安徽工业大学 光信息科学与技术 莫绪涛3.2 MATLAB的绘图的绘图二维绘图函数二维绘图函数o其他重要相关命令(对照其他重要相关命令(对照help自学)自学)naxes:设置坐标轴:设置坐标轴nhold:hold on 保持当前绘图窗口继续做图保持当前绘图窗口继续做图ngrid:grid on/off打开打开/关闭图形网格关闭图形网格nfigure:打开:打开/创建图形窗口,如创建图形窗口,如figure(4)nsubplot(m,n,p):将绘图窗口分成将绘图窗口分成mn个子区域,在第个子区域,在第p个区域绘制图形;个区域绘制图形;nclose:关闭当前图形窗口:关闭当前图形窗口o其他二维绘图函数:其他二维绘图函数:fplot、ezplot、2010-2011上36安徽工业大学 光信息科学与技术 莫绪涛3.2 MATLAB的绘图的绘图步骤总结步骤总结准备数据准备数据设置当前绘图区设置当前绘图区绘制图形绘制图形设置曲线特征和标记特征设置曲线特征和标记特征设置坐标轴和网格线属性设置坐标轴和网格线属性标注图形标注图形保存和导出图形保存和导出图形2010-2011上37安徽工业大学 光信息科学与技术 莫绪涛3.3 MATLAB的绘图的绘图三维绘图函数三维绘图函数o所有绘制三维图形的命令所有绘制三维图形的命令nhelp graph3do三维图形的特征控制三维图形的特征控制nColor controlnLightingnColor mapsnTransparencynAxis controlnViewpoint controlnCamera control2010-2011上38安徽工业大学 光信息科学与技术 莫绪涛3.3 MATLAB的绘图的绘图三维曲线绘制三维曲线绘制o三维曲线绘制函数为三维曲线绘制函数为nplot3(x1,y1,z1,LineSpec1,x2,y2,z2,LineSpec2,)n函数说明:函数说明:ox1,y1,z1分别为分别为x轴、轴、y轴和轴和z轴坐标值轴坐标值oLineSpec1为曲线特性选项参数,同为曲线特性选项参数,同plot中参数中参数o以逐点折线相连的方式绘制三维图形以逐点折线相连的方式绘制三维图形2010-2011上39安徽工业大学 光信息科学与技术 莫绪涛3.3 MATLAB的绘图的绘图三维曲线绘制三维曲线绘制o绘图举例绘图举例x=0:0.1*pi:10*pi;y=sin(x);z=cos(x);plot3(x,y,z,-b)grid onxlabel(x);ylabel(sinx);zlabel(cosx);title(Example 3D curve)2010-2011上40安徽工业大学 光信息科学与技术 莫绪涛3.3 MATLAB的绘图的绘图三维网格曲面绘制三维网格曲面绘制o三维网格曲面绘制函数为三维网格曲面绘制函数为nmesh(X,Y,Z,C)n函数说明:函数说明:oX,Y,Z都是矩阵都是矩阵o参数参数C表示网格曲面颜色分布表示网格曲面颜色分布o创建网格曲面创建网格曲面2010-2011上41安徽工业大学 光信息科学与技术 莫绪涛3.3 MATLAB的绘图的绘图三维网格曲面绘制三维网格曲面绘制o绘图举例绘图举例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上42安徽工业大学 光信息科学与技术 莫绪涛3.3 MATLAB的绘图的绘图meshgrid函数应用函数应用 X,Y=meshgrid(1:3,4:7)Y=4 4 4 5 5 5 6 6 6 7 7 7X=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)f2010-2011上43安徽工业大学 光信息科学与技术 莫绪涛3.3 MATLAB的绘图的绘图三维阴影曲面绘制三维阴影曲面绘制o三维阴影曲面绘制函数为三维阴影曲面绘制函数为nsurf(X,Y,Z,C)n函数说明:函数说明:oX,Y,Z都是矩阵都是矩阵o参数参数C表示网格曲面颜色分布表示网格曲面颜色分布o创建阴影曲面创建阴影曲面2010-2011上44安徽工业大学 光信息科学与技术 莫绪涛3.3 MATLAB的绘图的绘图三维阴影曲面绘制三维阴影曲面绘制o绘图举例绘图举例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上45安徽工业大学 光信息科学与技术 莫绪涛3.3 MATLAB绘图绘图网格和阴影曲面对比网格和阴影曲面对比网格曲面网格曲面阴影曲面阴影曲面网格曲面的网格是彩色,并且根据网格曲面的网格是彩色,并且根据z z值改变;值改变;阴影曲面的网格是黑色,网格区域内用颜色填充;阴影曲面的网格是黑色,网格区域内用颜色填充;2010-2011上46安徽工业大学 光信息科学与技术 莫绪涛3.4 MATLAB绘图绘图其他图形绘制其他图形绘制o直方图直方图 histo柱状图柱状图 baro面积图面积图 areao饼图饼图 pieo火柴杆图火柴杆图 stemo等高线图等高线图 contouro向量图向量图 quivero2010-2011上47安徽工业大学 光信息科学与技术 莫绪涛第四章第四章 MATLAB的编程的编程2010-2011上48安徽工业大学 光信息科学与技术 莫绪涛4.1 MATLAB的编程介绍的编程介绍oM文件编程文件编程:除了在命令窗口输入命令执行外,除了在命令窗口输入命令执行外,还可以向还可以向 C 语言一样采用编程方式;语言一样采用编程方式;文件名后缀为文件名后缀为.m2010-2011上49安徽工业大学 光信息科学与技术 莫绪涛4.1 MATLAB的编程介绍的编程介绍oM文件创建及文件创建及M文件编辑器认识文件编辑器认识调试调试/断点功能断点功能2010-2011上50安徽工业大学 光信息科学与技术 莫绪涛4.1 MATLAB的编程介绍的编程介绍oM文件分类文件分类n脚本(命令)文件脚本(命令)文件:只是一些命令行的组合,其中:只是一些命令行的组合,其中的所有变量也成为工作变量空间的一部分。的所有变量也成为工作变量空间的一部分。n函数文件函数文件:单独功能的代码块,需要接受参数输入:单独功能的代码块,需要接受参数输入和输出,函数和输出,函数M文件具有独立的内部变量空间。文件具有独立的内部变量空间。oMATLAB提供的大部分函数都用函数文件实现。提供的大部分函数都用函数文件实现。2010-2011上51安徽工业大学 光信息科学与技术 莫绪涛4.2 MATLAB的编程的编程脚本文件编程脚本文件编程o脚本文件脚本文件n注释语句注释语句n消除命令消除命令n定义变量定义变量n功能实现功能实现n结果显示结果显示2010-2011上52安徽工业大学 光信息科学与技术 莫绪涛4.2 MATLAB的编程的编程脚本文件编程脚本文件编程o脚本文件的运行脚本文件的运行n将脚本文件保存为将脚本文件保存为*.m文件文件(上例为(上例为primeNumber.m)n方式一:直接在方式一:直接在M文件编辑器中点击文件编辑器中点击“RUN”按钮按钮n方式二:在方式二:在MATLAB命令窗口输入文件名并回车命令窗口输入文件名并回车2010-2011上53安徽工业大学 光信息科学与技术 莫绪涛4.2 MATLAB的编程的编程脚本文件编程脚本文件编程o脚本文件编程提示:脚本文件编程提示:n用用clear、close all等语句开始,清除原有的变量和图形等语句开始,清除原有的变量和图形n注释行以注释行以%号开始,增加程序的可读性号开始,增加程序的可读性n如果不想显示结果,语句结尾用分号如果不想显示结果,语句结尾用分号2010-2011上54安徽工业大学 光信息科学与技术 莫绪涛4.3 MATLAB的编程的编程函数文件编程函数文件编程o函数文件函数文件n函数声明函数声明n帮助文字帮助文字n函数实现函数实现n注释部分注释部分2010-2011上55安徽工业大学 光信息科学与技术 莫绪涛4.3 MATLAB的编程的编程函数文件编程函数文件编程o函数文件的使用方法函数文件的使用方法n在脚本文件中进行调用在脚本文件中进行调用n直接在命令窗口进行调用直接在命令窗口进行调用2010-2011上56安徽工业大学 光信息科学与技术 莫绪涛4.3 MATLAB的编程的编程函数文件编程函数文件编程o函数文件编程提示:函数文件编程提示:n函数文件由函数文件由function起头,后面跟函数名起头,后面跟函数名;n函数名必须与文件名相同函数名必须与文件名相同n输出变量多于一个时,要用方括号,输出变量多于一个时,要用方括号,o举例:举例:x,y,z=function fun(a,b,c)2010-2011上57安徽工业大学 光信息科学与技术 莫绪涛4.4 MATLAB的编程的编程流程控制语句流程控制语句o分支控制语句分支控制语句nif结构结构nswitch结构结构o循环控制语句循环控制语句nfor循环循环nwhile循环循环ncontinue语句语句nbreak语句语句o程序终止语句:程序终止语句:return语句语句2010-2011上58安徽工业大学 光信息科学与技术 莫绪涛4.4.1 MATLAB的编程的编程分支控制分支控制-if结构结构oif-else结构:结构:if logical_expression1 commands1elseif logical_expression2 commands2elseif else commandsend和和C语言原理一致语言原理一致注意语法格式的差异注意语法格式的差异elseif和和else语句为可语句为可选语句选语句2010-2011上59安徽工业大学 光信息科学与技术 莫绪涛4.4.1 MATLAB的编程的编程分支控制分支控制-switch结构结构oswitch结构:结构:switch 表达式(标量或字符串)表达式(标量或字符串)case 值值1 语句组语句组A case 值值2 语句组语句组B .otherwise 语句组语句组Nendotherwise语句为可选语句为可选语句语句和和C语言的重要语法语言的重要语法区别:区别:每一个每一个case语语句后面不需要句后面不需要break语句跳出;语句跳出;2010-2011上60安徽工业大学 光信息科学与技术 莫绪涛4.4.2 MATLAB的编程的编程循环控制循环控制-for循环循环ofor循环:一般用于已知循环次数的情况循环:一般用于已知循环次数的情况for index=start:increment:end commandendindex为循环变量,为循环变量,increment为增量,默认值为为增量,默认值为1index可以赋值为数组可以赋值为数组A,第,第n次循环时,次循环时,index被赋值为被赋值为A(:,n),即,即A的第的第n列元素列元素MATLAB中循环效率很低,尽量充分使用数组结构中循环效率很低,尽量充分使用数组结构2010-2011上61安徽工业大学 光信息科学与技术 莫绪涛4.4.2 MATLAB的编程的编程循环控制循环控制-while循环循环owhile循环:一般用于已知循环结束条件情况循环:一般用于已知循环结束条件情况while expression commondsend表达式表达式expression为真,就执行语句,直至结果为假为真,就执行语句,直至结果为假2010-2011上62安徽工业大学 光信息科学与技术 莫绪涛4.4.3 MATLAB的编程的编程其他控制语句其他控制语句ocontinue语句语句n用在循环中,表示用在循环中,表示本次循环不再继续本次循环不再继续向下执行,进向下执行,进入下一次循环;入下一次循环;obreak语句语句n退出循环退出循环return语句语句n终止程序运行,用于需要立即退出的特殊情况等终止程序运行,用于需要立即退出的特殊情况等2010-2011上63安徽工业大学 光信息科学与技术 莫绪涛4.5 MATLAB的编程的编程交互命令交互命令pecho on/off:在执行在执行M文件每行程序前先显示其内容文件每行程序前先显示其内容pkeyboard:程序执行到此暂停,在屏幕上显示字符程序执行到此暂停,在屏幕上显示字符K,用户可以在命令窗进行任何操作用户可以在命令窗进行任何操作,最后键入字符串最后键入字符串return,恢复运行原来的程序,恢复运行原来的程序。pinput(提示符提示符):程序执行到此暂停,屏幕显示引号程序执行到此暂停,屏幕显示引号中的字符串,要求用户输入数据。数据输入后,程序中的字符串,要求用户输入数据。数据输入后,程序继续运行继续运行。举例:举例:N=input(N=);pc (control-c):强行停止程序运行的命令强行停止程序运行的命令2010-2011上64安徽工业大学 光信息科学与技术 莫绪涛4.6 MATLAB的编程举例的编程举例光线追迹光线追迹p例例:用:用MATLAB编程作图分析不同颜色的平行编程作图分析不同颜色的平行光轴的光线通过平凸透镜聚焦的光路情况。光轴的光线通过平凸透镜聚焦的光路情况。O12dF中心厚度为中心厚度为3mm凸面曲率半径为凸面曲率半径为100mm 波长波长 折射率折射率 480.0-1.523-蓝色蓝色 550.0-1.519-绿色绿色 632.8-1.515-红色红色2010-2011上65安徽工业大学 光信息科学与技术 莫绪涛4.6 MATLAB的编程举例的编程举例光线追迹光线追迹p光学分析光学分析 以球心为坐标原点以球心为坐标原点O12dFhABC1.光线经过透镜的第一个面后方向不变光线经过透镜的第一个面后方向不变2.光线经过透镜第二个面时发生折射:光线经过透镜第二个面时发生折射:假设平行入射光距离光轴的距离为假设平行入射光距离光轴的距离为h 入射角为:入射角为:折射定律:折射定律:光线在透镜中经过的距离为:光线在透镜中经过的距离为:2010-2011上66安徽工业大学 光信息科学与技术 莫绪涛4.6 MATLAB的编程举例的编程举例光线追迹光线追迹p编程思路编程思路p绘制平凸透镜绘制平凸透镜p绘制平面:确定绘制平面:确定X和和Y数组用数组用plot命令实现命令实现p绘制凸面:直接用绘制凸面:直接用fplot命令绘制命令绘制p绘制多条平行光线通过透镜前后的直线绘制多条平行光线通过透镜前后的直线p透镜曲面前的光线:透镜曲面前的光线:plotp经过透镜曲面后的折射光线:经过透镜曲面后的折射光线:plot2010-2011上67安徽工业大学 光信息科学与技术 莫绪涛4.6 MATLAB的编程举例的编程举例光线追迹光线追迹o光线追迹部分编程要考虑的内容光线追迹部分编程要考虑的内容n入射光线的波长可以改变入射光线的波长可以改变n入射光线的视场范围可以改变入射光线的视场范围可以改变n要绘制的光线的数目可以调整要绘制的光线的数目可以调整n绘制的光线的颜色根据波长不同可以进行设置绘制的光线的颜色根据波长不同可以进行设置o光线追迹设置成函数光线追迹设置成函数 raysPlot(DL,DH,ND,R,d,n,str)nDL/DH:确定考察的光线的范围;:确定考察的光线的范围;nND:光线数目设置:光线数目设置 nn:入射光线波长所对应的折射率:入射光线波长所对应的折射率nstr:设置光线绘制的特性,类似于:设置光线绘制的特性,类似于plot中的参数设置中的参数设置2010-2011上68安徽工业大学 光信息科学与技术 莫绪涛4.6 MATLAB的编程举例的编程举例光线追迹光线追迹o程序模块实现程序模块实现n编写绘制平凸透镜的函数,参数为编写绘制平凸透镜的函数,参数为R,dn编写光线经过平凸透镜前后光路绘制的函数编写光线经过平凸透镜前后光路绘制的函数n主程序中根据实际需要调用前面编写的两个函数主程序中根据实际需要调用前面编写的两个函数2010-2011上69安徽工业大学 光信息科学与技术 莫绪涛 主主 程程 序序消除工作空间变量消除工作空间变量/关闭窗口关闭窗口设置透镜初始参数设置透镜初始参数调用函数绘制平凸透镜轮廓调用函数绘制平凸透镜轮廓调用函数进行光线追迹调用函数进行光线追迹红光追迹红光追迹绿光追迹绿光追迹蓝光追迹蓝光追迹设置合适的坐标轴参数设置合适的坐标轴参数设置图形特征及标题设置图形特征及标题2010-2011上70安徽工业大学 光信息科学与技术 莫绪涛4.6 MATLAB的编程举例的编程举例绘制透镜绘制透镜绘制透镜的函数声明行及其绘制透镜的函数声明行及其H1H1行行绘制平凸透镜的绘制平凸透镜的“平平”面面绘制平凸透镜的绘制平凸透镜的“凸凸”面面2010-2011上71安徽工业大学 光信息科学与技术 莫绪涛光光线线追追迹迹函函数数实实现现光线追迹函数声明行光线追迹函数声明行容错处理一:容错处理一:输入参数个数检查输入参数个数检查容错处理二:容错处理二:DL/DH参数有效性检查参数有效性检查2010-2011上72安徽工业大学 光信息科学与技术 莫绪涛 光光线线追追迹迹函函数数实实现现根据输入的根据输入的DL/DH生成入射光线的高度数组生成入射光线的高度数组确定光线追迹的左右边界确定光线追迹的左右边界即光线的起点和终点的横坐标即光线的起点和终点的横坐标左右边界数值作为函数输出左右边界数值作为函数输出绘制平行光轴的光线部分绘制平行光轴的光线部分绘制经透镜会聚的光线部分绘制经透镜会聚的光线部分确定会聚光线的斜率确定会聚光线的斜率2010-2011上73安徽工业大学 光信息科学与技术 莫绪涛4.6 MATLAB的编程举例的编程举例-结果结果2010-2011上74安徽工业大学 光信息科学与技术 莫绪涛4.7 MATLAB的编程提示的编程提示o程序不是一遍就写好的,是多次不断修改、优程序不是一遍就写好的,是多次不断修改、优化得到的;化得到的;o代码编写过程中要不断进行代码调试和验证;代码编写过程中要不断进行代码调试和验证;o编程之前一定要理清代码编写的大的思路;编程之前一定要理清代码编写的大的思路;2010-2011上75安徽工业大学 光信息科学与技术 莫绪涛第五章第五章 MATLAB的符号运算的符号运算2010-2011上76安徽工业大学 光信息科学与技术 莫绪涛5.1 MATLAB的符号运算介绍的符号运算介绍o符号数学工具箱:符号数学工具箱:Symbolic Math Toolboxo符号数学工具箱对字符串进行符号分析,不符号数学工具箱对字符串进行符号分析,不是基于数组的数值分析是基于数组的数值分析o符号数学工具箱可以实现的功能符号数学工具箱可以实现的功能n复合、简化复合、简化n微分、积分微分、积分n求解代数方程求解代数方程n微分方程微分方程2010-2011上77安徽工业大学 光信息科学与技术 莫绪涛5.2 MATLAB的符号运算的符号运算符号表达式符号表达式o符号表达式符号表达式n代表数字、函数、算子和变量的代表数字、函数、算子和变量的MATLAB字符字符串,或字符串数组串,或字符串数组o符号数学符号数学n与代数和微积分所学到的求解方法一样与代数和微积分所学到的求解方法一样2010-2011上78安徽工业大学 光信息科学与技术 莫绪涛5.3 MATLAB的符号运算的符号运算符号对象建立符号对象建立osym函数:用来建立单个符号量函数:用来建立单个符号量n调用格式:符号量名调用格式:符号量名=sym(符号字符串符号字符串)n符号字符串可以是常量、变量、函数或表达式符号字符串可以是常量、变量、函数或表达式n举例:举例:U=sym(3*x2+5*y+2*x*y+6)osyms函数:定义多个符号变量函数:定义多个符号变量n调用格式调用格式:syms 符号变量符号变量1 符号变量符号变量2 n变量间用空格隔开,不能用逗号变量间用空格隔开,不能用逗号n举例:举例:syms x y;2010-2011上79安徽工业大学 光信息科学与技术 莫绪涛5.4 MATLAB的符号运算的符号运算四则运算四则运算o分解因式:分解因式:factor(S)o展开:展开:expand(S)o合并同类项:合并同类项:collect(S)o化简:化简:simplify(S)o2010-2011上80安徽工业大学 光信息科学与技术 莫绪涛5.5 MATLAB的符号运算的符号运算微分运算微分运算odiff:微分运算函数:微分运算函数o格式:格式:diff(f,x,n)求解求解f关于关于x的的n阶导数阶导数o举例:举例:f(x)=xsinx的一的一/二二/三阶导数计算三阶导数计算2010-2011上81安徽工业大学 光信息科学与技术 莫绪涛5.5 MATLAB的符号运算的符号运算积分运算积分运算oint:积分运算函数:积分运算函数o格式:格式:nint(f,x)求解求解f关于关于x的的不定积分不定积分nint(f,x,x0,x1)求解求解f关于关于x在在x0 x1上的上的定积分定积分o举例:举例:2010-2011上82安徽工业大学 光信息科学与技术 莫绪涛5.6 MATLAB的符号运算的符号运算其他运算其他运算Help-符号数学工具箱-Function Reference2010-2011上83安徽工业大学 光信息科学与技术 莫绪涛o在平时的学习及今后的科研或工作中进行数学计算时,在平时的学习及今后的科研或工作中进行数学计算时,积极使用积极使用MATLAB解决遇到的