资源预览内容
第1页 / 共146页
第2页 / 共146页
第3页 / 共146页
第4页 / 共146页
第5页 / 共146页
第6页 / 共146页
第7页 / 共146页
第8页 / 共146页
第9页 / 共146页
第10页 / 共146页
亲,该文档总共146页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
数值计算的工具MATLABl电子计算机技术为应用数学解决实际问题创造了物质条件 。l“今天,在技术科学中最有用的数学研究领域是数值分析和数学建模。”l“一切科学与工程技术人员的教育必须包括越来越多的数学和计算科学的内容。数学建模和相伴的计算正成为工程设计中的关键工具。科学家正日益依赖于计算方法以及在解释结果的精度和可靠性方面有充分的经验。”l吴文俊: “任何数学都要讲究逻辑推理,但这只是问题的一个方面,更重要的是用数学去解决问题,解决日常生活中,其他科学中出现的数学问题。学校给出的数学题目都是有答案的,已知什么,求证什么,都是很清楚的,题目也是一定做得出的。但是来到了社会上,所面对的问题大多是预先不知道答案的,甚至不知道是否会有答案。这就要求学生培养创造能力,学会处理各种实际数学问题的方法。”l数学软件既是数值计算的工具,也是数值实验的工具。MATLAB“矩阵实验室” l MATLAB基本操作l MATLAB数值计算l MATLAB符号计算l MATLAB图形处理l MATLAB程序设计l MATLAB实际应用 1 MATLAB基本操作一、MATLAB的开发环境 1、MATLAB系统 的组成 MATLAB开发环境 MATLAB数学函数库 MATLAB语言 图形功能 应用程序接口 五个部分。 lMATLAB6.x的开发环境包括命令窗口、启动平台窗口、工作空间窗口、命令历史窗口、当前路径窗口、M文件编辑器、在线帮助浏览器等。 l启动MATLAB后,将显示包括命令窗口、启动平台窗口、工作空间窗口、命令历史窗口和当前路径窗口等五个窗口和主菜单组成的操作桌面(主窗口)。l操作桌面在缺省状态下显示3个窗口,启动平台和工作空间窗口在同一个位置显示,命令历史窗口和当前目录窗口在同一位置显示。lMATLAB设定了几种特定的窗口布局方式,可以在视图(View)菜单中选择窗口布局(Desktop Layout)设定,其中缺省方式为Default。(1 1)命令窗口)命令窗口(Command Window)(Command Window)lMATLAB是交互式的语言,输入命令即给出运算结果。而命令窗口则是MATLAB的主要交互窗口,用于输入和编辑命令行等信息,显示结果(图形除外)。 l当命令窗口中出现提示符“”时,表示MATLAB已经准备好,可以输入命令、变量或运行函数。提示符总是位于行首。l在每个指令行输入后要按回车键,才能使指令被MATLAB执行。 (2)(2)启动平台(启动平台(Launch PadLaunch Pad) l启动平台用于启动和管理系统中安装的MATLAB系统。可以通过双击来启动相应的选项。l启动平台是一个展示MATLAB功能和产品工具箱的平台,可以通过Demos了解MATLAB。(3 3)工作空间工作空间(Workspace)(Workspace)l工作空间用于保存MATLAB变量的信息。l在工作空间可以对变量进行观察、编辑、保存和删除。l保存在工作空间中的自定义变量,直到使用了“clear”命令清除工作空间或关闭了MATLAB系统才被清除。l在命令窗口中键入“whos”命令,可以显示出保存在工作空间中的所有变量的名称、大小、数据类型等信息,如果键入“who”命令,则只显示变量的名称。(4 4)命令历史窗口命令历史窗口(Command History)(Command History) l命令历史窗口记录用户每一次启动MATLAB的时间以及在命令窗口运行过的所有指令。l命令历史窗口中的指令可以被复制到命令窗口重新运行。l如果要清除掉这些记录,可以选择“Edit”菜单中的“Clear Command History”项。(5 5)当前路径窗口)当前路径窗口(Current Directory)(Current Directory)l当前路径窗口也称为当前目录窗口。可以显示或改变当前目录。l当前目录指的是MATLAB运行文件时的工作目录。只有在当前目录或搜索路径下的文件及函数可以被运用或调用,如果没有特殊指明,数据文件也将储存在当前目录下。l如果要建立自己的工作目录,在运行文件前必须将该文件所在目录设置为当前目录。二、二、MATLABMATLAB的启动与退出的启动与退出1、MATLAB系统的启动(1)在桌面上双击MATLAB快捷方式图标。(2)在开始菜单中单击MATLABMATLAB6.5项。(3)在MATLAB安装目录MATLAB6p5中双击MATLAB快捷方式。(4)在MATLAB安装目录MATLAB6p5binwin32中双击MATLAB.exe图标。2、MATLAB系统的退出(1)点击操作桌面的关闭按钮。(2)执行操作桌面fileExit MATLAB命令。(3)在命令窗口中输入命令exit或quit,并回车。(4)用快捷键Ctrl+Q。三、三、MATLABMATLAB的帮助系统的帮助系统1、帮助命令 帮助命令是查询函数语法的最基本的方法,查询信息直接显示在命令窗口。帮助命令有help、lookfor。help %在命令窗口直接输入help,显示主要的在线帮助主题。help 函数名 %显示关于某个具体函数的功能、调用格式、及相关函数。help 帮助主题 %列出指定主题下的函数。例如help elfun %列出所有基本函数。 MATLABMATLAB的帮助系统(续)的帮助系统(续)lookfor image %查找有关图像的函数和命令。 2、在线帮助浏览器 MATLAB6.x设计了全新的在线帮助浏览器,当在View菜单中选择了Help选项,或在Help菜单中选择了MATLAB Help选项时,都可以打开帮助浏览器。3、演示帮助 选择Help菜单中的Demos选项,可以打开演示窗口,观看要查询项的动画演示。四、四、MATLABMATLAB的运行方式的运行方式1、命令行运行方式 演算纸式的科学计算语言 在MATLAB的应用中,最基本、最简单的应用,就是在命令窗口中直接输入命令来实现计算或绘图功能。 MATLAB命令行的一般形式为:l变量表达式或:l表达式 (赋值语句)命令行运行方式(续)命令行运行方式(续) 使用MATLAB最简单的方式是将MATLAB的命令窗口看作计算器,通过输入数学算式直接计算。 12345 ans= 15 如果在输入的表达式后面跟上分号“;”,那么运行后就不会马上显示运算的结果,必须键入输出变量后才能显示运算结果。用分号关闭不必要的输出会使程序运行速度成倍甚至成百倍地提高。 12345; 则不会马上显示运算结果,要得到运算结果,必须 ans 则显示结果为 ans= 15命令行运行方式(续)命令行运行方式(续)如果在表达式后面跟上逗号“,”或什么都不跟,运行后会马上显示该表达式的运算结果。如果一个表达式很长,可以用续行号“”将其延续到下一行。1+2+3+4+5+ %注意加号写在本行。 6+7+8+9+10 则输出结果 ans= 55 如果续行号前面是数字,直接使用续行号会出现错误,有三种解决办法,一是设法使续行号前面是一个运算符号,二是先空一格再加续行号,三是再加一个点。在一行中也可以写几个语句,它们之间用逗号“,”或分号“;”隔开。 A=1,2,3.3,sin(4),X=1966/310+1 则输出结果 A X= 7.3419。命令行运行方式(续)命令行运行方式(续)2 2、mm文件运行方式文件运行方式 l所谓m文件,就是用MATLAB语言编写的、可以在MATLAB中运行的程序。它是以普通文本格式存放的,故可以用任何文本编辑软件进行编辑。MATLAB提供的m文件编辑器就是程序编辑器。l在File菜单中选择NEW,再选择M-file,或点击新建图标,就可以调出m文件编辑器,用户可以用此编辑器编写m文件。lm文件有两种形式,一种称为命令文件(Script File),另一种称为函数文件(Function File),两种文件的扩展名都是m。(1 1)命令文件)命令文件 l如果要输入较多的命令,或者要经常对某些命令进行重复的输入,则可以将这些命令按执行顺序存放在一个m文件中,以后只要在MATLAB的命令窗口中输入该文件的文件名,系统就会调入该文件并执行其中的全部命令。这种形式就是MATLAB的命令文件。l命令文件中的语句可以访问MATLAB工作空间的所有变量;而在命令文件执行过程中创建的变量也会一直保留在工作空间中,其他命令或m文件都可以访问这些变量。l命令文件相当于DOS批处理文件。命令文件(续)命令文件(续)l求满足1+2+3+n100的最大正整数n的MATLAB程序为:sum=0;n=0; %赋初始值while sum=100,故应 对sum减nn=n-1; %当循环结束时有sum=100,故 应对n减1n,sum %显示最大正整数n以及和sum命令文件(续)命令文件(续)l将上述程序存入文件fl.m,然后在命令窗口键入fl 显示结果为n= 13sum= 91l指出: 程序中由符号“%”开始的文字都是注释文字,用来对程序或程序行行进行注释说明,符号“%”称为注释符,MATLAB在执行时将忽略“%”后的内容。(2 2)函数文件)函数文件函数文件是另一类m文件,可以像库函数一样方便地被调用,MATLAB提供的许多工具箱,是由函数文件组成的。对于某一类特殊问题,用户可以建立系统的函数文件,形成专用工具箱。函数文件的第一行有特殊的要求,它必须遵循如下的形式: function=()其他各行都是程序运行语句,没有特别要求。函数文件的文件名必须是.m。函数文件(续)函数文件(续)实现符号函数运算功能的函数m文件为:function y=sgn(x) %这是一个定义符号函数 y=sgn(x)的函数文件。if xx=4/3*pi; y=3*sgn(sin(x) 显示结果为:y= -3五、五、MATLABMATLAB的常用命令的常用命令 MATLAB可以通过菜单对工作着的窗口进行操作,也可以通过键盘在命令窗口输入命令进行操作,下面给出几个常用的通用命令。lquit 关闭MATLABlexit 关闭MATLABlclc 清除MATLAB命令窗口中的所有显示内容lclear 清除工作空间中保存的所有变量 其他命令可以在学习应用中逐步熟悉。六、六、MATLABMATLAB的基本运算的基本运算运算数学表达式MATLAB运算符MATLAB表达式示例加a+b+a+b1+2减a-b-a-b5-3乘ab*a*b2*3除a b/(右除)或(左除) a/b或ba 6/2或26幂abab23指出:右除相当于通常的除法。 七、七、MATLABMATLAB的变量与函数的变量与函数1、变量l变量就是在程序的运行过程中,其数值可以变化的量(数据),它可以代表一个或若干个内存单元(变量的地址)中的数据。为了对所有的变量所对应的存储单元进行访问,需要给变量命名。lMATLAB变量命名的规则是:以字母开头,后面可以跟字母、数字或下划线。不超过31个字符。字符间不可以留空格。区分大小写。MATLABMATLAB的变量与函数(续)的变量与函数(续)l系统变量变量名意义ans用于存储计算结果的默认变量pi圆周率inf(Inf)无穷大,例如1/0 eps计算机的最小数,和1相加产生比1大的数,在pc机上为252。 NaN(nan) 不定量,如0/0 i或j虚数单位,i=j=sqrt(-1) MATLABMATLAB的变量与函数(续)的变量与函数(续)l指出:自定义变量名一般不应和系统变量同名。在MATLAB中输入的内容直接决定变量的类型。使用who和whos命令可以查看变量。使用clear命令可以删除所有定义过的变量。如果只是删除其中某些变量,应在clear后面指定要删除的变量名。例如 clear a z有了变量,就可以组成表达式,也就可以对变量进行赋值。MATLAB的赋值语句有两种形式。 变量名表达式 表达式 在第一种情况下,MATLAB将右边的表达式的值赋值给左边的变量,在第二种情况,MATLAB将表达式的值赋值给系统变量ans。所谓表达式,就是用运算符号把特殊字符、函数名、变量名等有关运算量连接起来的式子,其结果是一个矩阵。2 2、函数、函数l数学函数函数名含义函数名含义abs(x)x的绝对值atant(x)x的反正切sqrt(x)x的平方根cot(x)x的余切exp(x)e的x次方acot(x)x的反余切sin(x)x的正弦log(x)x的自然对数cos(x)x的余弦log10(x) x的常用对数asin(x)x的反正弦sinh(x)双曲正弦acos(x)x的反余弦cosh(x)双曲余弦tan(x)x的正切函数(续)函数(续)l机器函数 pause 程序将暂时停在该函数所在位置,击任意键程序继续执行 echo on 在命令窗口显示正在执行的程序指令 cputime 给出MATLAB所耗用的总机器时间 clock 给出日期及当前时间l指出 在表达式中,函数一定要出现在等式的右边。每个函数对其自变量的个数和格式都有一定要求,如三角函数的单位是“弧度”而不是“度”。函数允许嵌套,如sqrt(sin(10)。系统函数的函数名小写。注意函数名也是区分大小写的。2 MATLAB的数值计算 MATLAB运算的基本数据对象是矩阵,标量可以看作是11的矩阵,向量可以看作是1n或n1的矩阵。因此,可以说MATLAB的数据结构就是矩阵,以矩阵运算为代表的基本运算功能一直是MATLAB引以为自豪的核心与基础。 一、矩阵的创建一、矩阵的创建l矩阵是线性代数的基本运算单元。l通常矩阵是指含有m行n列数值的矩形结构。矩阵中的元素可以是实数也可以是复数,由此可以将矩阵划分为实矩阵和复矩阵。lMATLAB支持线性代数所定义的全部矩阵运算。l在MATLAB中创建矩阵应遵循以下原则:矩阵的元素必须在方括号“ ”中。矩阵的同行元素之间用空格或逗号“,”分隔。矩阵的行与行之间用分号“;”或回车符分隔。矩阵的尺寸不必预先定义。矩阵元素可以是数值、变量、表达式或函数。如果矩阵元素是表达式,系统将自动计算出结果。矩阵的创建(续)矩阵的创建(续)1、直接输入法在命令窗口按规则输入方式创建矩阵 例1.在命令窗口创建简单的数值矩阵。 A=1 3 2;3 1 0;2 1 5 回车后在命令窗口显示如下结果 A = 1 3 2 3 1 0 2 1 5 例2.在命令窗口创建带运算表达式的矩阵,不显示结果。 y=sin(pi/3),cos(pi/6);log(20),exp(2); 输入“y”回车,在命令窗口显示出来。 y 显示出的结果为 y =矩阵的创建(续)矩阵的创建(续)指出:在矩阵较大时,用分行输入的方式(用回车代替分号区分不同行)比较接近于线性代数中的矩阵,更直观一些。任何矩阵元素内部不能有空格,否则会被认定是两个元素。 矩阵的创建(续)矩阵的创建(续)2、通过数据文件创建矩阵导入其他程序创建的数据 1 2 3 4 2 3 4 5 4 3 4 5 5 7 6 1 保存为fort.txt,用load命令读入, load fort.txt 输入fort就可以在命令窗口显示创建的矩阵。 fort 显示结果为 fort = 1 2 3 4 2 3 4 5 4 3 4 5 5 7 6 1 矩阵的创建(续)矩阵的创建(续)指出:通过load命令导入数据是形成矩阵的重要方法,解决了在工作现场没有MATLAB系统和其他数据管理系统的问题,可以只用基本的文字处理工具完成。MATLAB对文本形式的数据文件的扩展名并不计较,将上述数据文件换名保存为fort.1,仍然可以如上导入、应用。文件名可以定义为m1.txt或m1.1。但是,如果将文件命名为1m.txt,则显示出错信息:“Error: Missing operator(算子), comma(逗号), or semicolon(分号).”如果文件名命名为3.txt、1.txt、3.1等,则显示的是主文件名所用的数字。数据文件保存为word或wps等的文件格式同样可以引用。矩阵的创建(续)矩阵的创建(续)如果数据文件中有字母,则不能引用,显示出错信息,即使该字母在前面的指令中已经赋值也不可。如果数据文件中有算式,则不能完整显示,算式元素将仅显示第一个运算符(或关系符)前的数字。导入其他数据,如图像数据、Excel数据时,可以使用数据导入向导Import Wizard。矩阵的创建(续)矩阵的创建(续)3、通过m文件创建矩阵将矩阵建立为m文件 先将矩阵按创建原则写入一个m文件中,在MATLAB命令窗口或程序中直接运行该m文件(输入该m文件名),即可将矩阵调入工作空间。4、通过函数创建矩阵函数功能eye(n)产生n阶单位矩阵ones(m,n) 产生mn矩阵,元素都是“1”zeros(m,n)产生mn矩阵,元素都是“0”(零矩阵)产生空矩阵矩阵的创建(续)矩阵的创建(续)指出:当某一项操作无结果时,MATLAB将返回一个空矩阵,空矩阵的大小为0,但它确实存在于工作空间,可以通过变量名访问。输入后的矩阵将保存在MATLAB工作空间中,并可以随时被访问调用,如果用户不用“clear”命令清除它,或给它重新赋值,该矩阵将一直保存在工作空间直到MATLAB关闭为止。如果矩阵函数中只有一个参数,则为方阵。四种创建矩阵的方法各有优点:直接输入法方便简捷;通过数据文件创建有利于调用其他软件产生的数据;通过m文件创建是用于创建较大尺寸的矩阵并便于修改;通过函数创建可以由MATLAB内部函数创建一些特殊矩阵。矩阵的创建(续)矩阵的创建(续)5、其他构造矩阵的方法冒号法1冒号法构造向量冒号表达式的一般格式为:向量名初值:步长:终值。 x=0:0.5:2回车后显示x = 0 0.5000 1.0000 1.5000 2.0000。例5. 在命令窗口输入 x=2:-0.5:0回车后显示x = 2.0000 1.5000 1.0000 0.5000 0矩阵的创建(续)矩阵的创建(续)指出:步长可以省略,省略步长,则步长为1。步长可以为负,此时初值大于终值。向量的元素比较多而又有增减规律时,这种方法非常便利。冒号法表示向量时,向量的全体成员是从初值开始,以步长为增量,直到不超过终值的所有元素构成的序列。冒号法的应用可以避免使用循环,提高程序运行速度。矩阵的创建(续)矩阵的创建(续)2冒号法构造矩阵一般格式为:A(:,j):表示矩阵A的第j列;A(i,:):表示矩阵A的第i行。 。解: A(1,:)=1:5 %设置矩阵的第1行A = 1 2 3 4 5矩阵的创建(续)矩阵的创建(续) A(2,:)=6:10 %设置矩阵的第2行A = 1 2 3 4 5 6 7 8 9 10 A(3,:)=11:15 %设置矩阵的第3行,设置完成A = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15矩阵的创建(续)矩阵的创建(续)指出: 在MATLAB中,还可以利用函数linspace产生行向量,其调用格式为: linspace(a,b,n)。 其中a,b是向量的第一个和最后一个元素,n是元素的个数。这样产生的向量的元素成等差数列。例如, linspace(1,4,5)ans =函数linspace被称为线性等分函数。矩阵的创建(续)矩阵的创建(续)指出: 冒号法和应用linspace都可以创建具有递增元素序列的向量,但是,用冒号法创建向量时,向量的元素不一定取到终值,而应用linspace则必然会取到,因为b表示的就是最后一个元素。二、矩阵的运算二、矩阵的运算 MATLAB对于矩阵与矩阵之间的运算的处理方法与线性代数中的相同 运算运算符表达式加+A+B减-A-B乘*A*B除/(右除)或(左除) A/B或BA 幂Ap转置(单引号)A矩阵的计算(续)矩阵的计算(续)说明:矩阵也可以和一个数之间进行运算。线性代数没有定义除法运算,MATLAB为了便于计算,定义了矩阵的除法,并有左除和右除之分。 矩阵左除使用“”运算符,右除使用“/”运算符。 XAB是解方程组A*XB;XB/A则是解方程组X*AB。 一般地说,ABB/A。 在算法上,ABinv(A)*B,inv是求某一个矩阵的逆矩阵;而B/AB*inv(A)。 指出:如果A*B=B*A=I(单位矩阵),称A和B互为逆矩阵。如果矩阵中有复数元素,那么转置后得到它的复数共轭矩阵 。矩阵的运算(续)矩阵的运算(续)A=1,0,2;0,1,3;1,0,4,B=1,2,3;4,5,6;7,8,9,C=1,2;3,4;5,6 并计算A+B、A+3、A*C、A2、CT、A-1、A1B。指出:A2A2;CTC;A-1=inv(A) ;A1B=AB(或inv(A)*B) 在MATLAB系统中,还有一个数据结构是“数组”。数组在结构上和矩阵是完全一致的,唯一的区别是数组的运算不服从线性代数的规定,而是元素对元素间的运算。数组的加减运算与矩阵加减相同,数组的乘法、左除、右除、幂的运算符号分别是矩阵相应运算符前面加一个小圆点“.”。矩阵运算的一个重要的应用是解线性方程组。 矩阵的运算(续)矩阵的运算(续)例8.求下面方程组的根。解:解线性方程组,可以使用矩阵的左除“”,即XAB。 A=2,1,-3;3,-2,2;5,-3,-1; B=5;5;16; %列向量 X=AB X = 1 -3 -2 矩阵的运算(续)矩阵的运算(续)指出:线性方程组A*XB有两种解法:X=AB或X=inv(A)*B,但一般用第一种解法,在MATLAB中,第二种解法所用时间是第一种解法的50倍。可以看出,同样解线性方程组,不同的算法的效率是有极大差距的,可见优化和选择算法是非常重要的。 求逆运算inv(A)是重要的代数运算。三、矩阵的操作三、矩阵的操作1、矩阵的大小测度 Size函数用来测试矩阵的大小,对于 矩阵A,size(A)返回一个行向量,它包含了矩阵的行数m和列数n。如果专门显示行数和列数,则可以采用如下格式: 。 ,求矩阵的大小。矩阵的操作(续)矩阵的操作(续)解: A=1 1 1 1 1;1 2 3 4 5;1 3 6 10 15 设A为已知矩阵A = 1 1 1 1 1 1 2 3 4 5 1 3 6 10 15 d=size(A) 测试矩阵A的大小d = 3 5 d1=size(A,1) 测试矩阵的行数d1 = 3 d2=size(A,2) 测试矩阵的列数d2 = 5矩阵的操作(续)矩阵的操作(续)2、矩阵的元素操作 ,写出矩阵的元素A(2,3),将A(3,5)改为1。解: A=1 1 1 1 1;1 2 3 4 5;1 3 6 10 15A = 1 1 1 1 1 1 2 3 4 5 1 3 6 10 15矩阵的操作(续)矩阵的操作(续) A(2,3)ans = 3 A(3,5)=-1A = 1 1 1 1 1 1 2 3 4 5 1 3 6 10 -1矩阵的操作(续)矩阵的操作(续)例11. A=1 3 2;3 1 0;2 1 5A = 1 3 2 3 1 0 2 1 5 B=4 3 6;5 1 4;3 4 6B = 4 3 6 5 1 4 3 4 6 U(1,1)=A(1,1)+B(1,1); U(1,2)=A(1,2)+B(1,2); U(2,1)=A(2,1)-B(2,1); U(2,2)=A(2,2)-B(2,2); UU = 5 6 -2 0矩阵的操作(续)矩阵的操作(续)3、矩阵块的操作 利用冒号表达式对矩阵进行拆分、提取子矩阵是矩阵操作的重要方面。提取的规则是A(:,j)表示取矩阵A的第j列的全部元素;A(i,:)表示取矩阵A的第i行的全部元素;A(i,j)表示取矩阵A的第i行第j列交叉位置的元素;A(i:i+m,:)表示取矩阵A的第ii+m行的全部元素;A(:,k:k+n)表示取矩阵A的第kk+n列的全部元素;A(i:i+m,k:k+n)表示取矩阵A的第ii+m行内并在第kk+n列中的全部元素。矩阵的操作(续)矩阵的操作(续)例12.拆分矩阵的例子。 A=1 1 1 1 1;1 2 3 4 5;1 3 6 10 15A = 1 1 1 1 1 1 2 3 4 5 1 3 6 10 15 A(2,3)ans = 3 A(3,5)=-1A = 1 1 1 1 1 1 2 3 4 5 1 3 6 10 -1矩阵的操作(续)矩阵的操作(续) A=1,2,3,4,5;6,7,8,9,10;11,12,13,14,15;16,17,18,19,20A = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 A(1,:)ans = 1 2 3 4 5矩阵的操作(续)矩阵的操作(续) A(:,2:4)ans = 2 3 4 7 8 9 12 13 14 17 18 19 A(2:3,4:5)ans = 9 10 14 15 A(2:3,1:2:5)ans = 6 8 10 11 13 15矩阵的操作(续)矩阵的操作(续)例13.组合矩阵的例子。 A=1,2;3,4A = 1 2 3 4 B=2,3;4,5B = 2 3 4 5 A,Bans = 1 2 2 3 3 4 4 5矩阵的操作(续)矩阵的操作(续) A;Bans = 1 2 3 4 2 3 4 5 A;6,7ans = 1 2 3 4 6 7矩阵的操作(续)矩阵的操作(续)冒号表达式是MATLAB中非常重要的、应用非常广泛、也非常灵活的工具。利用冒号表达式比利用循环语句赋值解决同一问题要快得多,所以实际编程时一般应当尽量采用冒号表达式而不是用循环。矩阵的操作(续)矩阵的操作(续)例14. A=1 2 3 4 56 7 8 9 1011 12 13 14 1516 17 18 19 20A = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 A(end,:) %取A的最后一行ans = 16 17 18 19 20矩阵的操作(续)矩阵的操作(续) A(1,4,3:end) 取A的第1,4两行中第3列到最后一列。ans = 3 4 5 18 19 20 A(1,4,:) 取A的第1,4两行。ans = 1 2 3 4 5 16 17 18 19 20。指出:end用来表示矩阵某一维末尾元素。矩阵的操作(续)矩阵的操作(续)例15c=3.2,4.5;2.4,4.7; d=c,ones(size(c);zeros(size(c),eye(size(c)d = 0 0 1.0000 0 0 0 0 1.0000。指出: 实际上,例15是分块输入矩阵的例子,是将矩阵分4块输入的。注意分块的意义。四、数据的输出格式四、数据的输出格式format命令的格式为:format 格式符格式符决定数据输出格式,常见格式及其含义有:short:输出小数点后4位,最多不超过7位有效数字。 对于大于1000的实数,用5位有效数字的科学记数形式输出。long:15位有效数字形式输出。short e:5位有效数字的科学记数形式输出。long e:15位有效数字的科学记数形式输出。rat:近似有理数形式输出。 数据输出格式(续)数据输出格式(续)指出:format命令只影响数据的输出格式,而不影响数据的存储和计算。如果输出的矩阵的每个元素都是整数,则MATLAB就用整数格式显示结果。只要矩阵中有一个元素不是整数,MATLAB就按当前的输出格式显示。默认的输出格式是short。数据输出格式(续)数据输出格式(续)注意rat格式。如果在进行运算前执行format rat命令,则可以用分数形式显示运算结果,这样便于核对手算的结果的正确性。例如, 1/3ans = format rat 1/3ans = 1/3 在改变了输出格式后,为了以后还按默认的格式输出,应当再执行format short命令。数据输出格式(续)数据输出格式(续)即使在默认格式下,0也仅仅是输出0。教材中输出0.0000是不正确的。显示格式是非常重要的,要熟悉几种重要的格式。3 MATLAB的符号运算 数值运算中的变量需要事先赋值,才能出现在表达式中参与运算。但人们经常需要对含有字符的矩阵和函数进行处理和运算,如求函数的微分、积分等等,这就需要进行符号运算。 MATLAB的符号运算利用符号数学工具箱进行,符号工具箱的功能主要包括符号表达式的创建、符号矩阵的运算、符号表达式的化简和替换、符号微积分、符号代数方程、符号微分方程、符号函数绘图等等 。一、符号对象的创建一、符号对象的创建1、字符串变量的创建 字符串是一种特殊的符号对象,在数据处理、造表和函数求值中,字符串具有重要的应用。 用单引号界定的字符序列称为字符串。例如 s=hello回车后,显示s =hello符号对象的创建(续)符号对象的创建(续)指出:字符串中的字符可以是数字、英文字母、汉字、横线、括号、表达式、方程等。字符串也称字符串数据或字符变量。用赋值符号“”把字符串赋给某个标识符,例如s,这个标识符称为字符串变量名,简称字符名。2 2、符号变量和符号表达式的创建、符号变量和符号表达式的创建 MATLAB的符号数学工具箱提供了两个基本函数sym和syms,用来创建符号变量、符号表达式和符号矩阵。用函数sym建立符号变量、符号表达式和符号矩阵。 调用格式为: 变量sym(表达式) y=sym(2+cos(x) 将显示 y = 2+cos(x) 这是一个符号表达式。符号对象的创建(续)符号对象的创建(续)用函数syms建立符号变量、符号表达式和符号矩阵。 调用格式为: Syms var1 var2 var3 注意空格。 syms y u p=exp(-y/u) q=y2+u3+u*y 这样就建立了两个符号表达式,分别存放在变量p和q里。 指出:由于syms函数书写简洁,意义清楚,符合MATLAB的习惯特点,一般提倡使用syms创建符号变量、符号表达式和符号矩阵。 符号对象的创建(续)符号对象的创建(续)注意用单引号创建的字符串变量和用函数sym、syms创建的符号变量性质并不完全一样。在符号工具箱中,有些指令的参数既可以用字符串型数据也可以用符号型数据,但也有一些指令的参数必须用符号型数据。 加法、求导等运算对数值形式的字符串和符号变量都按符号变量对待,不加区别,而级数求和命令symsum(s,n,h,k)(s是通项表达式,n为级数的项数,h、k分别是求和的起止项数)中的s必须用符号表达式而不能用字符串。MATLAB中,在没有规定的情况下,默认最接近x的字母表示自变量。二、符号微积分二、符号微积分llimit(f,x,a) 求表达式f当xa时的极限ldiff(f) 求表达式f对缺省变量的微分ldiff(f,n) 求表达式f对缺省变量求n阶微分ldiff(f,v) 求表达式f对变量v的微分ldiff(f,v,n) 求表达式f对变量v的n阶微分lint(f) 求表达式f对缺省变量的积分lint(f,v) 求表达式f对变量v的积分lint(f,v,a,b) 求表达式f在区间(a,b)上对变量v的定积分符号微积分(续)符号微积分(续)例.已知f(x)=ax2 +bx+c,求f(x)的微分和积分。解:syms a b c x f=sym(a*x2+b*x+c) f = a*x2+b*x+c diff(f,a) ans = x2 int(f) ans = 1/3*a*x3+1/2*b*x2+c*x int(f,x,0,2) ans = 8/3*a+2*b+2*c4 MATLAB的图形处理MATLABMATLAB的图形处理的图形处理( (续)续) x,y,z=sphere(30); surf(x,y,z),box二维图形的绘制二维图形的绘制一、二维图形的绘制1、数据绘图命令plotplot(y) 当y为向量时,以y的分量为纵坐标,以元素序号为横坐标,用直线依次连接数据点,绘制曲线。若y为实数矩阵,按列绘制每一列所对应的曲线,图中曲线数等于矩阵的列数。plot(x,y) 若y和x为同维向量,以x为横坐标,以y为纵坐标绘制连线图。若x是向量,y是行数或列数与x的长度相等的矩阵,则绘制多条不同色彩的连线图,x被作为这些曲线的共同坐标。若x和y是同型的矩阵,则以x和y的对应列元素为横纵坐标分别绘制曲线,曲线条数等于矩阵的列数。plot(x,y1,x,y2,) 以公共的x元素为横坐标,以y1,y2,y3,元素为纵坐标值绘制多条曲线。二维图形的绘制(续)二维图形的绘制(续)例1以向量y=(1,2,5,4.5,3,6,1)的各个分量为纵坐标,分量序号为横坐标绘制顺序连接线。解:输入命令 y=1 2 5 4.5 3 6 1; plot(y)二维图形的绘制(续)二维图形的绘制(续)二维图形二维图形( (续续) )例2.画出一条正弦曲线和一条余弦曲线。 x=0:pi/10:2*pi; %构造向量 y1=sin(x); %构造对应的y1坐标 y2=cos(x); %构造对应的y2坐标 plot(x,y1,x,y2) %画出一个以x为横坐标,y1, y2为纵坐标的图形 指出:构造向量采用了所谓的冒号法,格式为 向量名初值:步长:终值 %步长为1时可以省略。plot是针对向量或矩阵的列来绘制曲线的,也就是说,使用plot之前必须首先定义好曲线上每一点的x坐标和y坐标。在上述的格式中,x和y都可以是表达式。如果自变量的间隔取得比较大,光滑的曲线就会显示出折线的本来面貌。二维图形二维图形( (续续) )2 2、函数绘图命令、函数绘图命令1解析函数绘图命令fplot使用格式:fplot(fun,lims,s,tol)其中,用单引号界定的输入参数fun,是解析函数字符串表达式、内联函数或m函数文件名。fun可以是一个函数,也可以是元素是函数的向量。输入参数lims规定了绘图区间,lims=a,b,c,d表示,自变量x和函数y的取值范围分别是xa,b,yc,d。通常c,d被省略。输入参数s用于修饰曲线,后面介绍。输入参数tol规定函数取值的相对误差,常省略。默认2e-3。fun是函数向量时,绘出的几条曲线的取值区间和线型是相同的。解析函数绘图命令解析函数绘图命令fplotfplot(续)(续)例3.绘制函数f(x)=cos(tan(x)的曲线。解: fplot(cos(tan(pi*x),-0.4,1.4)fplot(fplot(续)续)解析函数绘图命令解析函数绘图命令fplotfplot(续)(续)指出:输入该命令的函数表达式是解析式,式中不用数组算法符号(与plot命令不同)。fplot函数用于绘制已定义函数在指定的范围内的图像,虽然它与plot相似,也是用描点法画图,但该函数可以根据函数自身的性质自适应地对函数进行采样,能够自动确定曲线变化率大的区段并在此区段进行密集采样。也就是说,画图时x的取值间隔是随函数的曲率自动调节的,曲率大(曲率半径小)处间隔小,曲率小处间隔大。这种自适应地取值使绘制的曲线光滑、美观、可以减少取点的数目的同时更好地反映函数的变化规律。2 2隐函数绘图命令隐函数绘图命令ezplotezplot使用格式:ezplot(func,lims)其中输入参数func可以是字符表达式,内联函数或m函数文件名。输入参数func为一元函数f(x)时,输出y=f(x)的几何图形。这时命令后面可以不用括号和引号。但函数的第一个符号不得是括号,不能加写输入参数lims,默认绘图范围是-2,2。输入参数func是二元函数表达式f(x,y)时,输出方程f(x,y)=0的几何图形,即绘制隐函数曲线。变量的范围由输入参数lims规定,lims=a,b,c,d表示x和y的取值范围分别是xa,b,yc,d。省略c,d时默认x、y取值区间相同。隐函数绘图命令隐函数绘图命令ezplotezplot(续)(续)输入参数func是参数方程时,func写成x(t),y(t),按参数方程绘出ta,b的函数曲线。输入参数lims规定自变量取值范围,默认范围是x-2,2。该命令一次只能绘制一条曲线,在绘出函数图形的同时自动在图的上侧加注函数解析式,下侧加注自变量名称,曲线的色型、线型无法控制。例4绘制三叶玫瑰线r=sin(3t)(极坐标方程)。解:把极坐标方程r=sin(3t),通过转换成直角坐标方程: 。输入命令: ezplot(sin(3*t)*cos(t),sin(3*t)*sin(t),0,pi)隐函数绘图命令隐函数绘图命令ezplotezplot(续)(续)隐函数绘图命令隐函数绘图命令ezplotezplot(续)(续)二维图形绘制二维图形绘制( (续)续)MATLAB绘制的其它图像的例子:例5.某次考试学生成绩优秀的占8%,良好的占20%,中等的占36%,及格的占24%,不及格的占12%。分别用饼图和条形图表示。解: x=8 20 36 24 12; subplot(221);pie(x,1 0 0 0 1); title(饼图); subplot(222);bar(x,grpup); title(垂直条形图); subplot(223);bar(x,stack); title(累加值为纵坐标的垂直条形图); subplot(224);barh(x,group); title(水平条形图);fplot(fplot(续)续)3 3、绘图控制命令、绘图控制命令(1)曲线控制命令 在使用plot等命令绘制曲线时可以指定曲线的颜色、线型和数据点图标。基本的调用格式为 plot(x,y,color line-style marker) 颜色控制符表字符颜色字符颜色b蓝色m紫红色c青色r红色g绿色w白色k黑色y黄色绘图控制绘图控制( (续续) )线型控制符表线型格式实线(默认) 点线点划线虚线符号-:-.-绘图控制绘图控制( (续续) )数据点标记控制符表标记符号数据点形式标记符号数据点形式.实心圆点大于号o(字母)空心圆点x=0:0.2:8; y=sin(x); plot(x,y,r:x)绘图控制绘图控制( (续续) )(2 2)图形的标注命令)图形的标注命令图形标注函数函数意义title()给图形添加标题xlabel() 标记横坐标ylabel() 标记纵坐标text(x,y,)在x,y所定义的位置标注gtext()该命令提示在鼠标指定位置(光标显示为“”标注)axis(xmin xmax ymin ymax)指定显示范围Grid on(/of)添加或取消网格线图形的标注图形的标注( (续续) )例7.给例2的图形加入网格和标注。 x=0:pi/10:2*pi; y1=sin(x); y2=cos(x); plot(x,y1,x,y2) grid on %添加网格 xlabel(x轴) %横坐标名 ylabel(y轴) %纵坐标名 title(正弦函数和余弦函数曲线) %标题 text(1.5,0.3,cos(x) %指定位置标注 gtext(sin(x) %用鼠标选择位置标注 axis(0 2*pi -1.2 1.2) %设置坐标轴的最大最 小值图形的标注图形的标注( (续续) )图形的标注图形的标注( (续续) )指出:标注文字可以使用汉字。标注也可以适当设定字符属性增加文本变化,例如 title(弦函数曲线,FontName,隶书,FontSize,20) (3 3)图形的比较显示命令)图形的比较显示命令 默认的情况下,MATLAB每一次使用plot函数进行绘图,都将清除原有的图形,但有时候我们希望后面绘制的图形能和前面所绘制的图形进行比较。此时我们有两种方法,一是采用hold on(/of)命令,在同一个图形窗口中绘制新的图形叠加在原有的图形上。二是采用subplot(n,m,k)命令,将图形窗口分割成几个小窗口,在每个窗口中画出一个图形。 hold on(/of) 保持绘图命令 subplot(n,m,k) 将图形窗口分成n行m列个格子,在 第k个格子绘图,格子按从上到下依行计数。图形的比较显示(续)图形的比较显示(续)例8.在同一个窗口中,使用两次plot函数 绘制两条曲线。 x=0:0.2:12; plot(x,sin(x),-) hold on plot(x,cos(x),:)图形的比较显示(续)图形的比较显示(续)图形的比较显示(续)图形的比较显示(续)例9把当前窗口分割成四个区域,绘制四条函数曲 线。 x=0:0.05:8; y1=2*sin(x); y2=2*cos(x); y3=sin(2*x); y4=cos(2*x); subplot(2,2,1); plot(x,y1); title(2sinx) 图形的比较显示(续)图形的比较显示(续) subplot(2,2,2); plot(x,y2); title(2cosx) subplot(2,2,3); plot(x,y3); title(sin2x) subplot(2,2,4); plot(x,y4); title(cos2x)图形的比较显示(续)图形的比较显示(续)二、三维图形的绘制二、三维图形的绘制1、和二维图形相对应,MATLAB提供了一个三维曲 线绘制命令plot3,它的应用和plot类似,只是多了z方向的数据。例10.绘制一条三维曲线。 clear clc z=0:pi/50:10*pi; x=sin(z); y=cos(z); plot3(x,y,z)三维图形(续)三维图形(续)三维图形(续)三维图形(续)2、绘制三维曲面的命令则有mesh(x,y,z)或surf(x,y,z)。它们的区别在于,前者绘制出的是一个用网格近似的曲面,后者绘制出的是一个真正表面图。例11.绘制多峰函数图。 z=peaks(40); mesh(z); surf(z);peaks称为多峰函数,常用于三维曲面的演示。 三维图形(续)三维图形(续)三维图形(续)三维图形(续)三、例三、例在区域上的图像。解:执行下面的程序(pt3d.m):x=-18:0.5:18;y=x;u=ones(size(y)*x;v=y*ones(size(x);r=sqrt(u.2+v.2)+eps;z=sin(r)./r;mesh(z);xlabel(x);ylabel(y);zlebel(z);例例例例(pt3d2.m)x=-18:0.5:18;y=x; 产生x,y两个向量x,y=meshgrid(x,y);形成二维网格数据r=sqrt(x.2+y.2)+eps;加上eps避免当分母r趋向于0时会无法定义z=sin(r)./r;产生z轴数据surf(x,y,z);例例5 MATLAB程序设计第四代编程语言(4GL) 一、MATLAB运算1、关系运算 运算符说明运算符说明小于大于=大于或等于=等于=不等于MATLABMATLAB运算(续)运算(续) 关系运算用来比较两个同样大小的矩阵,或用来比较一个矩阵和一个标量。比较结果是一个0-1矩阵,当相应元素经关系运算结果为真时,对应位置上生成1,否则为0。例1.已知矩阵A1 2 5 7 9,找出大于4的元素的 位置。 A=1 3 5 7 9; b=A4 则输出的结果为 b = 0 0 1 1 1 注意=和=的区别。=用于比较两个变量,当它们相等时返回1,当它们不相等时返回0;而=用于将运算的结果赋值给一个变量。 MATLABMATLAB运算(续)运算(续)2、逻辑运算对于数值矩阵,当元素为0时,逻辑上为假;当元素为非0时逻辑上为真。一般地,当表达式逻辑上为假时,赋值0;当表达式逻辑上为真时,赋值1。注意符号输入。“”使用键盘左上角的上位字符,而“|” 使用“Backspace”下面键的上位字符。名称运算符说明与运算&两个元素都是真时结果为真,否则为假或运算|两个元素同为假时结果为假,否则为真非运算元素为假结果为真,元素为真结果为假MATLABMATLAB运算(续)运算(续)例2.建立矩阵A和B,计算A&B、AB、B。 A=1 -3 5;0 1 0; B=1 50 0;-3 0.5 12; C=A&B D=AB B 输出结果为 C = 1 1 0 0 1 0 D = 1 1 1 1 1 1 ans = 0 0 1 0 0 0二、二、MATLABMATLAB控制结构控制结构 顺序结构、选择结构、循环结构1、顺序结构 顺序结构是由两个程序模块串接而成的,一个程序模块可以是一条语句、一段程序、一个函数等。顺序结构的两个程序模块按其在程序中的先后顺序依次执行。 在用MATLAB编写程序时,只要将两个模块按顺序排列组织进程序就实现了顺序结构。2、选择结构 执行MATLAB结构的基本过程是,首先根据规定条件进行逻辑判断,如果条件成立,执行后续程序模块,否则执行备选程序模块。MATLABMATLAB控制结构(续)控制结构(续)if-else-end语句 格式: if 逻辑表达式 程序模块1; else 程序模块2; end 如果逻辑表达式为真,则执行程序模块1,然后跳出该选择结构,执行end的后续命令;如果逻辑表达式为假,则执行程序模块2,然后跳出该选择结构,执行end的后续命令。MATLABMATLAB控制结构(续)控制结构(续)if-end语句 格式 if 逻辑表达式 程序模块; end 如果逻辑表达式为真,则执行if和end之间的程序模块,否则,执行end的后续命令。MATLABMATLAB控制结构(续)控制结构(续)当有三个或更多的选择时,可采用if结构的下列形式: 格式: if 逻辑表达式1 程序模块1; elseif 逻辑表达式2 程序模块2; elseif 逻辑表达式n 程序模块n; else 程序模块n+1; end 如果逻辑表达式j为真,则执行程序模块j,然后跳出该选择结构,执行end的后续命令;如果if和elseif后的所有逻辑表达式都为假,则执行程序模块n+1,然后跳出该选择结构,执行end的后续命令。MATLABMATLAB控制结构(续)控制结构(续)3、循环结构for语句 for x=表达式1:表达式2:表达式3 程序模块 end 其中表达式1的值是循环初值,表达式2的值为步长,表达式3的值为循环的终值。如果省略表达式2,则默认步长为1。该循环的执行过程是:将表达式1的值赋给x;对于正的步长,当x的值大于表达式3的值时,结束循环;对于负的步长,当x的值小于表达式3的值时,结束循环。否则,执行for和end之间的程序模块,然后执行下面的第步;x加上一个步长后,返回第步继续执行。MATLABMATLAB控制结构(续)控制结构(续)while语句 while 表达式 程序模块 end 只要表达式的值为1(真),就执行while和end之间的程序模块,直到表达式的值为0(假)时终止该循环。指出:对于逻辑表达式来说,一般地只要表达式的值不是0,就认为表达式为真。在设计while循环时,要注意防止死循环的出现,也就是确保循环一定次数后一定可以退出循环。相对于while循环,for循环更直观、简单,因此大多数程序员更喜欢用for循环。MATLABMATLAB控制结构(续)控制结构(续)例3求123100的和。 用while语句的程序如下: i=0; s=0; while i tic % 开始计时 A=magic(100); % 运行程序,magic是魔方矩阵函数。 toc % 结束计时,显示所耗时间。在命令窗口观察运行结果为。elapsed_time =4、注意格式5、利用帮助和演示 6、特别提示自定义变量和函数的名称不能和MATLAB命令及内部函数重名。MATLAB不支持汉字,汉字不能出现在变量名和函数名中。MATLAB对大小写敏感。实际应用实际应用二、MATLAB图形用户界面三、Note-book
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号