MATLAB程序设计 课件全套 第1-12章 绪论、MATLAB基础知识-神经网络_第1页
MATLAB程序设计 课件全套 第1-12章 绪论、MATLAB基础知识-神经网络_第2页
MATLAB程序设计 课件全套 第1-12章 绪论、MATLAB基础知识-神经网络_第3页
MATLAB程序设计 课件全套 第1-12章 绪论、MATLAB基础知识-神经网络_第4页
MATLAB程序设计 课件全套 第1-12章 绪论、MATLAB基础知识-神经网络_第5页
已阅读5页,还剩475页未读 继续免费阅读

下载本文档

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

文档简介

1MATLAB程序设计《MATLAB程序设计》2第一章绪论1.1引言1.2MATLAB概述1.3工作环境1.4帮助系统1.5使用初步1.1引言《MATLAB程序设计》3科学研究和工程实践中的计算问题如何解决?1.简单计算:如常见的加减乘除可以采用口算、心算等人工方式;稍微复杂的也可借助算盘进行珠算;需要对数计算的问题可以采用计算尺;三角函数、指数运算等以及计算器进行;实际工程问题中,哪些是涉及了复杂、大量计算?工业机器人操作空间计算1.9液压油管1.8髋关节驱动液压缸1.7髋关节位移传感器1.6背包下肢外骨骼机本体结构设计1.10膝关节驱动液压缸1.5髋关节1.4大腿连杆1.12踝关节1.3膝关节1.1足底1.2踝关节1.11小腿连杆下肢外骨骼助力机器人关节运动学分析第一:复杂的矩阵计算及变换《MATLAB程序设计》62.复杂的计算问题当D=|A|≠0,方程组有解,可用Cramer法则求解。N阶行列式的计算需要n!次乘法,求解n阶线性方程组,共需要做(n+1)!次乘法。如n=20,则,需做:21!=5.10909×10192.复杂的计算问题第二:非线性微分方程《MATLAB程序设计》7第四:优化问题求解第三:超越方程求解怎么办?计算机编程!Maple《MATLAB程序设计》8MathematicaMATLABMathematica是一个综合性数学软件环境,可以把公式文档和公式推导、计算过程表达在一个notebook里面,图文并茂地表达一个复杂的过程,可以实现任意复杂的算法,也容易生成数据去检验。Maple和Mathematica软件类似,以符号运算处理见长,可以给出解析解和任意精度解。二者在处理大数据的能力有待进一步提高。MATLAB以强大的矩阵计算和仿真能力闻名于世,尤其是针对具体工程问题有许多工具箱,省去编程麻烦,成为工程师和科研人员进行科学计算的优选对象。1.2

MATLAB概述MATLAB:意为矩阵实验室,是Matrix和Laboratory单词的简称,用于算法开发、数据可视化、数据分析及数值计算的高级技术计算语言和交互式环境。

《MATLAB程序设计》9数据分析无线通信深度学习图像处理与计算机视觉信号处理量化金融与风险管理机器人控制系统仿真MATLAB应用领域等其它MATLAB的主要优势是什么?1.编程环境

《MATLAB程序设计》10

接近于Windows的标准界面,人机交互性更强,操作更简单。2.简单易用《MATLAB程序设计》11具备面向对象编程的特点,基于C/C++的语法特征,但比其更简单,程序可移植性好。3.强大的处理能力

包含大量经典和最新的计算算法(如人工智能和深度学习),可方便的实现计算功能,如矩阵运算、多维数组操作、方程组求解、最优化计算、信号分析、数据统计分析、建模动态仿真。《MATLAB程序设计》124.数据可视化可视化功能是该软件的一大特点,包括二维和三维的可视化、图像处理、动画和表达式作图,还具有其它软件所没有的图形光照处理、色度处理以及四维数据表现等。《MATLAB程序设计》135.强大的工具箱

《MATLAB程序设计》14众多的工具箱,分为功能性工具箱和学科性工具箱,前者主要用来扩充其符号计算、图示建模仿真、文字处理以及与硬件实时交互;后者专业性很强,由学科内的顶级专家编写,用户无需编写这些学科内的基础程序而直接进行高精尖的研究即可。6.程序接口

MATLAB可以方便调用和转换成C、C++和Fortran程序其它软件如LabVIEW也可以调用MATLAB程序,程序扩展能力强。《MATLAB程序设计》15MATLAB的发展简史20世纪70年代中期,CleveMoler博士开发了调用EISPACK和LINPACK的FORTRAN子程序库.在其给学生讲授线性代数课程时,自己动手又编了程序接口,当时取名为MATLAB;1983年,JackLittle和CleveMoler等人采用C语言开发了第二代专业版,使其具备数值计算和数据显示的功能。1984年,CleveMoler和JackLittle成立MathWorks公司,正式把MATLAB推向市场《MATLAB程序设计》16CleveMolerJackLittle早期是一年更新一次版本1992年,MATLAB4.0版本推出Simulink、Control、NeuralNetwork、SignalProcessing专用工具箱。1993年,通过购买Maple的使用权,以此为引擎,开发了符号计算工具箱,MATLAB4.1版具备符号运算功能,同推出Windows版,大受欢迎。1995年,MATLAB推出Linux版1997年,MATLAB5.0实现真正的32位运算,计算速度提高,图形表示更佳到20世纪90年代,MATLAB已成为国际控制界的标准计算软件。如今是一年更新两次版本从2006年开始,版本号以年份进行区分,分为a和b,其中,a是3月份更新,b是9月份更新。且真正支持64位Windows系统运算目前最新版本是MATLAB2020a.《MATLAB程序设计》171.3工作环境《MATLAB程序设计》18双击MATLAB.exe,出现MATLABR2019b的启动界面启动后,其用户界面如下所示工具栏命令行窗口工作区域1.3.1菜单/工具栏绘图标签APP标签1.3.1菜单/工具栏主页标签1.新建脚本2.新建实时脚本3.新建4.打开5.导入数据6.保存工作区7.布局8.预设9.设置路径10.帮助?区别脚本是命令或代码的集合,而实时脚本是命令和文档的集成,就是在原有m文件上加了交互式图标,包含文本功能和控件。建议初学者采用默认值即可命令行窗口用于输入命令、并显示除图形以外所有的执行结果。“>>”是命令提示符,表示MATLAB处于准备状态。输入命令后按下Enter键后,MATLAB执行该命令并显示结果。fx为函数浏览器按钮,可快速查找函数《MATLAB程序设计》211.3.2命令行窗口如果命令错写成X=(log(3)+srt(11))/2,则MATLAB在编译时会给出如图的红色错误信息。

重新输入函数(命令)即可MATLAB被称为“演算纸式”的编程语言《MATLAB程序设计》221.3.2命令行窗口若一个公式或命令行很长,如下,需要分两行或多行输入怎么办?《MATLAB程序设计》231.3.2命令行窗口如图,第一行后加“3个小黑点”并按下Enter键,在下一行接着输入即可“3个小黑点”为“续行符”《MATLAB程序设计》24一个命令行可以输入一个命令,也可以输入多个命令,各命令之间用分号或逗号分割;1.3.2命令行窗口命令后如果有分号,则该命令执行后的结果不显示在命令行窗口;工作区也称为工作空间,用来存储各种变量和结果的内存空间,如图。《MATLAB程序设计》251.3.3工作区窗口变量的属性可观察,红色方框处点击右键,在弹出的属性中对“大小”、“最大值”、“最小值”进行勾选,即可此窗口自动记录自系统安装以来所有使用过的命令,供用户查询方法:点击“布局”,在属性“命令历史记录”中勾选“停靠”亦可清除命令历史记录《MATLAB程序设计》261.3.4命令历史记录窗口《MATLAB程序设计》271.4.1MATLAB帮助窗口1、单击“主页”选项卡“资源”命令组的“?”按钮2、单击“帮助”下拉按钮并选择“文档”命令3、按F1功能键,再单击“打开帮助浏览器”链接4、在命令行窗口输入doc命令1.4帮助系统《MATLAB程序设计》28例如,开方运算命令sqrt的使用方法。1.4.1MATLAB帮助窗口《MATLAB程序设计》291、help命令

最基本方法,完全匹配,需要明确某函数或命令的准确名字,不准确就找不到1.4.2MATLAB帮助命令《MATLAB程序设计》302、lookfor命令

对搜索范围内的所有m文件进行关键字搜索,条件比较宽松。1.4.2MATLAB帮助命令3、模糊查询

只需输入命令的前几个字母,然后按下Tab键,系统会列出所有以这几个字母开头的命令。后续使用help命令,作进一步的查询。1.5使用初步1.绘制如右式描述的二维曲线《MATLAB程序设计》31MATLAB程序如下:t=0:0.1:6;x=t.*sin(3*t);y=t.*sin(t).*sin(t);plot(x,y)1.5使用初步2.求高次方程的根:《MATLAB程序设计》323.求解线性方程组MATLAB程序计算结果33MATLAB程序设计《MATLAB程序设计》34第二章MATLAB基础知识2.1数据类型2.2变量和数据操作2.3MATLAB矩阵2.4MATLAB运算2.5矩阵分析2.1数据类型《MATLAB程序设计》35MATLAB功能强大的一个原因在于有丰富的数据类型数据类型数值类型逻辑类型字符串函数句柄结构体单元数组面向对象的用户类和Java类还有用于高级交叉编程的数据类型《MATLAB程序设计》362.1.1数值类型数值型数据是最基本的一类数据数值类型数据整型数据复(数)型数据浮点(实)型数据无穷量和非数值量系统给每种数据类型分配不同字节的内存单元,由此也决定了取值范围不同《MATLAB程序设计》372.1.1数值类型1.整型数据整型数据是不带小数的数,分为带符号整数和无符号整数,每一种又根据所占字节的不同分为8位、16位、32位、64位整型数。注意:表中的转换函数是将不同数据类型的整数进行相互转换,超出范围时,会出错;例1:请在MATLAB命令行窗口输入三条命令,观察结果并比较差异:x=int8(-3),y=uint8(-3),z=int8(129)《MATLAB程序设计》382.1.1数值类型1.整型数据还有对非整数(或者浮点数)的取整操作函数,如下表有两种类型,分别是单精度(Single)和双精度(double)浮点数。区别如下:注意:1、MATLAB中默认的类型是双精度浮点类型,单精度浮点数不能与整数型数据进行有关运算。2、浮点数表示的实际数值是有限且离散的(但不影响使用)《MATLAB程序设计》392.1.1数值类型2、浮点型数据复型数据包括实部和虚部两部分,两部分默认都是双精度类型。虚数单位用i或j表示都可以,创建时可以按照复数形式进行输入;6+5i、6+5j、6+5*i、6+5*j表示同一个复数。与复数有关的6个函数,功能如表《MATLAB程序设计》402.1.1数值类型3、复型数据MATLAB使用Inf和-Inf表示正无穷量和负无穷量,一般是由于运算溢出,产生了超出双精度浮点数数值范围的结果。NaN表示非数值量,是由于0/0或者Inf/Inf等类型的非正常运算而产生的。在MATLAB命令行窗口中输入以下命令:a=3/0,b=log(0),c=Inf-Inf结果为:a=Inf,b=-Inf,c=NaN《MATLAB程序设计》412.1.1数值类型4、无穷量(Inf)和非数值量(NaN)逻辑型数据是指布尔类型的数据及数据之间的逻辑关系除了传统的数学运算外,MATLAB还支持关系运算和逻辑运算,其目的是提供求解真/假命题的答案。作为所有关系和逻辑表达式的输入,MATLAB把任何非0数值当做真,把0当做假;所有关系和逻辑表达式的输出,对于真,输出为1,对于假,输出为0;《MATLAB程序设计》422.1.2逻辑类型《MATLAB程序设计》431、使用true和false函数直接生成2、通过关系运算或逻辑运算产生2.1.2逻辑类型生成逻辑数值的方法类别符号说明关系操作<小于<=小于或等于>大于>=大于或等于==等于~=不等于逻辑运算&与|或~非字符串能够显示在屏幕上英文或中文字符,创建的方式:等号右边在英文的状态下输入单引号,在单引号内输入你想要显示的文本。一个字符串是存储在一个行向量中的文本,这个行向量中每一个元素都代表一个字符(ASCII码)。可以通过它的下标对字符串数组做具体的访问。《MATLAB程序设计》442.1.3字符和字符串属于间接调用函数的一种方法创建函数句柄需要用到操作符@。句法格式如下:

function_handle=@function_filename在使用过程中,和其它函数一样,需要使用输入参数,如图所示《MATLAB程序设计》452.1.4函数句柄把内部函数cos创建成函数句柄调用句柄函数对x进行计算生成待使用的输入参数《MATLAB程序设计》46结构体相当于数据容器,可以将相关的、不同类型的数据封装在一起。由字段名和字段值组成,如图创建方法(1):使用点号(.)运算符如创建一个名为zhangsan的学生成绩信息的结构体。如果再增加一个学生lisi的学生成绩2.1.5结构体类型字段名字段值《MATLAB程序设计》47创建方法(2)使用struct函数创建:其格式如下:s=struct(‘field1’,value1,‘field2’,value2,……)2.1.5结构体类型创建创建成功的提示成功访问结构体内部的数据《MATLAB程序设计》481、数组类型

2.1.6单元数组类型在MATLAB中进行运算的所有数据类型,都是按照数组及矩阵的形式进行存储和运算的定义是广义的,元素是任意的数据类型,如数值、字符串、指针等数组的创建方法:(1)中括弧“[]”或冒号“:”(2)预定义函数创建:如linspace()《MATLAB程序设计》49单元数组是一种无所不包的广义矩阵,组成单元数组的每一个元素称为单元,每一个单元可以包括一个任意数组。创建方法:(1)使用赋值语句,注意使用的是“{}”,与数组不同(2)利用cell函数创建2.1.6单元数组类型2、单元(cell)数组类型

创建2*2大小的空单元数组创建成功的提示分别给单元数组赋值2.2变量和数据操作《MATLAB程序设计》502.2.1变量与赋值命了名的内存单元就是变量,代表了一个或若干个内存单元。变量命名规则:

第一:字母开头,后接字母、数字或下划线的字符序列;如my12、my_12均合法,12my、_my12均不合法第二:最多63个字符,超出无效;

第三:变量名区分大小写;如myvar与myVar不是同一个变量注意:MATLAB提供的标准函数以及命令都必须使用小写字母。《MATLAB程序设计》512.2.1变量与赋值赋值赋值语句有两种形式:(1)变量=表达式(2)表达式

说明:(1)分号是不显示结果,%是注释前面的语句

(2)sin、sqrt、cos、abs均是MATLAB提供的数学函数,pi和i是预定义变量

例题:计算的值,其中,并把结果赋值给变量z,并显示计算结果。显示z的值《MATLAB程序设计》52在MATLAB工作空间中,由系统本身定义的变量注意:预定义变量有特殊含义,在使用时尽量避免对它们重新赋值。如i、j两个变量,如果非要赋值,则要确保在后面的运算中不涉及到复数运算2.2.2预定义变量预定义变量含义预定义变量含义ans计算结果的默认赋值变量nargin函数输入参数个数pi圆周率π的近似值nargout函数输出参数个数i,j虚数单位lasterr存放最新的错误信息Inf,inf无穷大,如1/01的结果lastwarn存放最新的警告信息NaN,nan非数,如0/0,inf/infeps机器零阈值工作区窗口专门用于内存变量的管理,可以删除、观察、修改!《MATLAB程序设计》532.2.3内存变量的管理1、内存变量的删除与修改第一:在工作区窗口的右键快捷菜单中选择“新建”命令,并给变量命名;第二:在工作区中双击该变量,打开变量编辑器;第三:在空白表格中填写元素值,表格的每一个方格对应矩阵一个元素。《MATLAB程序设计》542.2.3内存变量的管理2、大矩阵输入工作空间中的一些有用或者重要变量如何长久的保留下来?MAT文件是MATLAB中保存变量数据的一种标准格式,属于二进制文件,扩展名为.mat。MAT文件的生成和装入由save和load两条命令完成,常用格式如下:savefilename变量1变量2……loadfilename《MATLAB程序设计》552.2.3内存变量的管理3、内存变量文件的导出与导入注意:1)三角函数的自变量是弧度和角度的区别?2)rem和mod函数的区别?3)符号函数的用法?《MATLAB程序设计》56数学中的大部分运算MATLAB全部可以实现2.2.4常用数学函数如果函数的自变量为矩阵,MATLAB会如何处理呢?自变量是数组或矩阵,函数的基本操作后仍以数组或矩阵的形式显示结果《MATLAB程序设计》572.2.4常用数学函数《MATLAB程序设计》582.2.5数据的输出格式1)、常数的表示方法日常记数法:如3.1415、-935i、3+5i科学记数法:如1.78e2、6.7325E2i、1234e-7好处:当我们要标记或运算某个较大或较小且位数较多时,用科学记数法免去浪费很多空间和时间数据在内部是以双精度保存,但输出的格式可以使用format命令进行设置或改变。format格式如下:format格式符《MATLAB程序设计》592.2.5数据的输出格式2.3MATLAB矩阵《MATLAB程序设计》60

数组与矩阵数学上,定义m×n个数排成m行n列的数表,称为矩阵在程序设计中,为了处理方便,把具有相同类型的若干变量按有序的形式组织起来的一种形式,即同类数据元素的集合,称为数组。因此,矩阵以数组的方式存在,一维数组相当于向量,二维数组相当于矩阵《MATLAB程序设计》612.3.1矩阵的建立(一)赋值法——简单矩阵1、直接输入法:将矩阵的元素用方括号括起来,同一行的元素用空格或逗号(英文状态)隔开,行与行之间用分号(英文状态)隔开

说明:亦可以采用此方法建立复数矩阵例如:A=[2,3,5;3,6,10]B=[235;3610]V1=[8,59,60,33]V2=[5;8;3;4;9]《MATLAB程序设计》622、利用冒号或linspace命令产生一维矩阵(向量)2.3.1矩阵的建立3、小矩阵拼接大矩阵例如:A=[1,2,3;4,5,6;7,8,9]B=[1:2:5;4:2:8;7:3:13]C=[A,B;B,A]《MATLAB程序设计》63(二)指令构建法——特殊矩阵特殊矩阵1、通用特殊矩阵2、专门学科的特殊矩阵3、稀疏矩阵零矩阵幺矩阵单位矩阵随机矩阵魔方矩阵范徳蒙矩阵希尔伯特矩阵拓普利兹矩阵伴随矩阵2.3.1矩阵的建立产生通用特殊矩阵的函数有:这几个函数的调用相似,以zeros函数为例说明:《MATLAB程序设计》641、通用的特殊矩阵2.3.1矩阵的建立(1)zeros(m):产生m×m的零矩阵;(2)zeros(m,n):产生m×n的零矩阵当,m=n时,等同于zeros(m);(3)zeros(size(A)):产生与矩阵A同样大小的零矩阵;(1)魔方矩阵中国的传统游戏,又称幻方。该矩阵每一行、每列以及两条对角线的元素和都相等,对于n阶魔方矩阵,其元素有1,2,3,……,n2-1,n2等共n2个整数。命令格式:magic(n)说明:该命令只有一个输入参数n,为魔方的阶数;《MATLAB程序设计》652.3.1矩阵的建立2、用于专门学科的特殊矩阵例如:A=magic(3)B=magic(4)(2)范徳蒙(Vandermonde)矩阵该矩阵是法国数学家范德蒙提出的一种各列为几何级数的矩阵。其特点是:最后一列全为1,倒数第二列为一个指定向量,其它各列是其后一列与倒数第二列对应元素的乘积。范德蒙矩阵应用之一就是在纠错编码中,常用的纠错码Reed-solomon编码中冗余块的编码采用的即为范德蒙矩阵。命令格式:vander(V)说明:V为输入参数向量《MATLAB程序设计》662.3.1矩阵的建立2、用于专门学科的特殊矩阵(3)希尔伯特(Hilbert)矩阵希尔伯特矩阵是一种数学变换矩阵,正定,且高度病态(即任何一个元素发生一点变动,整个矩阵的行列式的值和逆矩阵都会发生巨大变化),病态程度和阶数相关。命令格式:hilb(n)说明:n为输入参数,希尔伯特矩阵的阶数《MATLAB程序设计》672.3.1矩阵的建立2、用于专门学科的特殊矩阵稀疏矩阵:大量的零元素和极小量的非零元素构成较大的矩阵;矩阵规模都比较大,为节省内存存储空间,需要进行处理。(1)矩阵存储方式:完全存储方式和稀疏存储方式:完全存储方式:将所有元素按列一个不少地存储稀疏存储方式:仅存储矩阵中所有的非零元素及其位置,即行号和列号《MATLAB程序设计》682.3.1矩阵的建立3、稀疏矩阵《MATLAB程序设计》69第一:将完全存储方式转换成稀疏存储方式

函数A=sparse(S),将矩阵S转换成稀疏存储方式的矩阵A;(2)稀疏存储方式的产生命令如下:X=[20000;00000;00050;0100-1;0000-5]A=sparse(X)2.3.1矩阵的建立《MATLAB程序设计》70第二:产生稀疏存储矩阵

函数B=spconvert(A),将A所描述的稀疏矩阵转换成稀疏存储矩阵B;注意;A为一个m*3或m*4的矩阵。(2)稀疏存储方式的产生2.3.1矩阵的建立命令如下:A=[221;31-1;433;538;6612]B=spconvert(A)1、矩阵元素的引用方式:通过下标来引用,如A(3,4),可以对A中任意一个元素重新赋值,如A(3,1)=0与矩阵有关的三个命令《MATLAB程序设计》712.3.2矩阵的拆分size(A):求矩阵规模大小length(A):给出矩阵长度(最大值)ndims(A):求矩阵的维数《MATLAB程序设计》722、利用冒号表达式获得子矩阵子矩阵:是指矩阵中的一部分元素构成的矩阵(1)单个冒号来作为行下标或列下标时,他代表的是全部行或全部列;(2)A(i:i+m,k:k+n)表示第i行到第i+m行与第k列到第k+n列的所有元素2.3.2矩阵的拆分《MATLAB程序设计》733、改变矩阵的形状

命令:reshape(A,m,n)2.3.2矩阵的拆分命令如下:B=reshape(A,5,4)将A矩阵变成5行4列的新矩阵B2.4MATLAB运算《MATLAB程序设计》74

MATLAB的运算都是针对矩阵而言的,既有矩阵意义下的运算,也有针对矩阵元素的运算(单个数据运算算是特例),但就运算的性质而言,基本上分为算术运算、关系运算和运算逻辑三类。基本运算:+、-、*(乘)、/(右除)、\(左除)、^(乘方)2.4.1算术运算《MATLAB程序设计》752.4.1算术运算注意(1):同型矩阵可以做加减法,对应元素直接相加减即可;不同型,则给出错误信息,不再进行计算。注意(2):单个元素或同长度行向量可以和矩阵做加减,即矩阵中每一个或每一行元素与该元素或行向量进行加减。例如:A=[2,3,5;3,6,10];B=[123;456];C=A-BD=[12]E=A+D例如:A=[2,3,5;3,6,10];B=[123];C=A-1D=A-B一、基本算术运算——矩阵加减运算(+,-)《MATLAB程序设计》762.4.1算术运算例如:A=[1,2,3;4,5,6]B=[1,2;3,4;5,6]C=A*BD=A*C一、基本算术运算——矩阵乘法(符号为“*”)注意(1):如果A为m×n矩阵,B为n×p矩阵,则C=A*B为m×p矩阵,如果不满足条件,两个矩阵不能相乘,系统会给出出错信息注意(2):标量可以和矩阵做乘法,即矩阵中每一个元素与该元素进行乘。《MATLAB程序设计》772.4.1算术运算例如:A=[1,2;1,3];B=[1,0;1,2];C=A\BD=A/B一、基本算术运算——矩阵除法(左除‘\’和右除‘/’)注意(1):矩阵A必须是非奇异方阵,此时A\B等效于A的逆左乘B矩阵,而A/B相当于矩阵A乘以矩阵B的逆,此时矩阵的规模要一致。(2)当A和B都是标量时,此时A\B等效于A的倒数乘以B,而A/B相当于A乘以B的倒数。如果矩阵为方阵,则可以进行幂计算,格式为A^x,其中x为标量《MATLAB程序设计》782.4.1算术运算一、基本算术运算——矩阵的乘方(符号为“^”)例如:A=[2,3,8;3,1,-1;5,0,4];B1=A^2B2=A^3B3=A^0.1特殊运算,在有关算术运算符(+、-、*、/、\、^)前面加点,所以叫点运算两矩阵进行点运算是指它们对应的元素进行相关运算,因此,要求两矩阵的规模和维数相同。《MATLAB程序设计》792.4.1算术运算二、点运算例如:A=[1,2;1,3];B=[1,0;1,2];C1=A*BC2=A.*BC3=A./BC4=A.^B《MATLAB程序设计》80第一:当两个是标量时,直接比较两数大小,如关系成立,则结果返回1,否则,返回0;第二:当两个是同种类型的矩阵,比较是按照两矩阵相同位置的元素进行。第三:当一个是标量,另一个是矩阵,则把标量分别与矩阵元素相比,结果是与矩阵同型的0、1矩阵;运算法则2.4.2关系运算类别符号说明关系运算<小于<=小于或等于>大于>=大于或等于==等于~=不等于六种关系运算《MATLAB程序设计》81例

产生5阶随机方阵A,其元素为[10,90]区间的随机整数,然后判断A的元素是否能被3整除。(1)生成5阶随机方阵A。A=fix((90-10+1)*rand(5)+10)(2)判断A的元素是否可以被3整除。

P=rem(A,3)==0其中,rem(A,3)是矩阵A的每个元素除以3的余数矩阵。此时,0被扩展为与A同维数的零矩阵,P是进行等于(==)比较的结果矩阵。《MATLAB程序设计》82

3种逻辑运算符:逻辑与——‘&’,逻辑或——‘|’,逻辑非——‘~’2.4.3逻辑运算(1)非零元素为真,用1表示,零元素为假,用0表示。(2)若参与逻辑运算的是两个同维矩阵,那么运算将对矩阵相同位置上的元素按标量规则逐个

进行。(3)若参与逻辑运算的一个是标量,一个是矩阵,那么运算将在标量与矩阵中的每个元素之间按标量规则逐个进行。(4)在算术、关系、逻辑运算中,算术运算优先级最高,逻辑运算优先级最低。运算规则《MATLAB程序设计》83建立矩阵A。A=[4,-65,-54,0,6;56,0,67,-45,0]例题:建立矩阵A,然后找出大于4的元素的位置,并输出相应位置元素。(2)找出大于4的元素的位置。k=find(A>4)(3)输出相应位置的元素A(k)《MATLAB程序设计》842.5.1对角阵和三角阵1.对角阵:只有对角线上有非0元素的矩阵,或说若一个方阵除了主对角线上的元素外,其余元素都等于零,则称之为对角阵。形式如下所示:注意:如果上式中各非零元素均为1,则称单位矩阵,记为In,如上所示:《MATLAB程序设计》852.5.1对角阵和三角阵(1)提取矩阵的对角线元素设A为m×n矩阵,diag(A)函数用于提取矩阵A主对角线元素,产生一个具有min(m,n)个元素的列向量。diag函数还有一种形式diag(A,k),其功能是提取第k条对角线的元素;例如:A=[1,2,3;4,5,6];B=diag(A)C1=diag(A,1)C2=diag(A,-1)《MATLAB程序设计》86设V为具有m个元素的向量,diag(V)将产生一个m×m对角矩阵,其主对角线元素即为向量V的元素。

diag函数也有另一种形式diag(V,k),其功能是产生一个n×n(n=m+|k|)对角阵,其第k条对角线的元素即为向量V的元素。

(2)构造对角矩阵例如:V=[1,2,-3];C1=diag(V)C2=diag(V,-1)2.5.1对角阵和三角阵《MATLAB程序设计》87

三角阵又进一步分为上三角阵和下三角阵,所谓上三角阵,即矩阵的对角线以下的元素全为0的一种矩阵,而下三角阵则是对角线以上的元素全为0的一种矩阵。2.5.1对角阵和三角阵2.三角阵(2)下三角矩阵提取矩阵A的下三角矩阵的函数是tril(A)和tril(A,k)。其用法与提取上三角矩阵的函数triu(A)和triu(A,k)完全相同。(1)上三角矩阵求矩阵A的上三角阵的函数是triu(A)。triu(A)函数也有另一种形式triu(A,k),其功能是求矩阵A的第k条对角线以上的元素。《MATLAB程序设计》882.5.2矩阵的转置与旋转1.矩阵的转置

把原矩阵的第i行变成目标矩阵的第i列,转置运算符为小数点后接单撇号,即(.’)例如:A=[1,2,-3;4,5,6];B=A.’还有一种转置叫共轭转置,其运算符为单撇号,它在转置的基础上还要取每个数的复共轭,如果原矩阵为实数矩阵,则二者的结果是一致的。《MATLAB程序设计》894.矩阵的上下翻转:与左右翻转类似,对矩阵A实施上下翻转的函数是flipud(A)。2.5.2矩阵的转置与旋转2.矩阵的旋转:利用函数rot90(A,k)将矩阵A旋转90º的k倍,当k为1时可省略。3.矩阵的左右翻转:对矩阵实施左右翻转是将原矩阵的第一列和最后一列调换,第二列和倒数第二列调换,…,依次类推。MATLAB对矩阵A实施左右翻转的函数是fliplr(A)。

例如:A=[1,2,3;4,5,6;7,8,9];B1=rot90(A)B2=fliplr(A)B3=flipud(A)《MATLAB程序设计》902.5.3矩阵的逆与伪逆

对于一个方阵A,如果存在一个与其同阶的方阵B,使得:A·B=B·A=I

(I为单位矩阵)则称B为A的逆矩阵,当然,A也是B的逆矩阵。

求一个矩阵的逆是一件非常烦琐的工作,容易出错,但在MATLAB中,求一个矩阵的逆非常容易。求方阵A的逆矩阵可调用函数inv(A)。1.矩阵的逆例如:A=[1,2,3;1,4,9;1,8,27];B=inv(A)《MATLAB程序设计》912.5.3矩阵的逆与伪逆2.矩阵的伪逆

如果矩阵A不是一个方阵,或者A是一个非满秩的方阵时,矩阵A没有逆矩阵,但可以找到一个与A的转置矩阵A’同型的矩阵B,使得:A·B·A=A,B·A·B=B此时称矩阵B为矩阵A的伪逆,也称为广义逆矩阵。

在MATLAB中,求一个矩阵伪逆的函数是pinv(A)。《MATLAB程序设计》922.5.4方程的行列式在MATLAB中,求方阵A所对应的行列式的值的函数是det(A)例如:A=[1,2,3;1,0,3;-3,4,1]B=det(A)

把一个方阵看作一个行列式,并对其按行列式的规则求值,这个值就称为矩阵所对应的行列式的值。《MATLAB程序设计》932.5.5矩阵的秩与迹2.矩阵的迹

1.矩阵的秩

矩阵线性无关的行数与列数称为矩阵的秩。在MATLAB中,求矩阵秩的函数是rank(A)。

矩阵的迹等于矩阵的对角线元素之和,也等于矩阵的特征值之和。在MATLAB中,求矩阵的迹的函数是trace(A)。例如:A=[1,2,3;1,0,3;-3,4,1];r=rank(A)trace(A)《MATLAB程序设计》94

计算函数在MATLAB中,求向量范数的函数为:(1)norm(V)或norm(V,2):计算向量V的2—范数。(2)norm(V,1):计算向量V的1—范数。(3)norm(V,inf):计算向量V的∞—范数。2.5.6向量和矩阵的范数

矩阵或向量的范数用来度量矩阵或向量在某种意义下的长度。范数有多种方法定义,其定义不同,范数值也就不同。1.向量的3种常用范数:2.矩阵的范数及其计算函数MATLAB提供了求3种矩阵范数的函数,其函数调用格式与求向量的范数的函数完全相同。V=[-1,1/2,1];v1=norm(V,1),v2=norm(V),v3=norm(V,inf)《MATLAB程序设计》952.5.7矩阵的特征值与特征向量(3)[V,D]=eig(A,‘nobalance’):与第2种格式类似,但第2种格式中先对A作相似变换后求矩阵A的特征值和特征向量,而格式3直接求矩阵A的特征值和特征向量。对于n阶方阵A,如果存在数λ和向量v,使得等式A*v=λ*v成立,则称数λ为A的特征值,向量v称为A的特征向量。在MATLAB中,计算矩阵A的特征值和特征向量的函数是eig(A),常用的调用格式有:(1)

E=eig(A):求矩阵A的全部特征值,构成向量E。(2)

[V,D]=eig(A):求矩阵A的全部特征值,构成对角阵D,并求A的特征向量构成V的列向量。《MATLAB程序设计》96例如:A=[1,1,0.5;1,1,0.25;0.50.25,2];[VD]=eig(A)说明(1):3个特征值为-0.0166、1.4801、2.5365,各特征值对应的特征向量为V的各列构成的向量。说明(2):一个矩阵的特征向量有无穷多个,eig函数只找出其中的n个,其它特征向量可以由这n个特征向量进行线性组合。97MATLAB程序设计《MATLAB程序设计》98第三章MATLAB程序流程控制3.1M文件3.2程序控制结构3.3函数文件3.4程序调试与优化《MATLAB程序设计》993.1M文件1.M文件:使用MATLAB语言编写的程序,称为M文件。实质上,M文件是由若干MATLAB命令或函数组合在一起的文本集合。作用:可以完成某些操作(加减乘除等复杂运算),也可以实现某种算法(粒子群算法、最小二乘法等)命令(Script)文件函数(function)文件实时脚本(livescript)文件M文件《MATLAB程序设计》1002.命令文件仅仅是一系列命令的集合注意:(1)运行这一部分命令时仅需要输入文件名即可;

(2)MATLAB提供的有专门的M文件编辑器(两种方式打开M文件编辑器)分别如下:

第一:在主页中点击“新建”,然后选择“脚本”,即可进入

第二:在命令行输入edit,回车后则可直接进入编辑器

M文件编辑区《MATLAB程序设计》101MATLAB程序如下:(1)打开M文件编辑器(2)输入如下所示的命令;(3)保存文件,并将其命名为jiajiafa.m举例:编写一个矩阵相加减的命令文件在命令行窗口输入jiajianfa,直接回车,结果如图注意:工作区各变量的值均存在《MATLAB程序设计》102

也是命令的集合,但第一行必须以英文function开始,作为函数文件的标志3.函数文件与命令文件的主要区别一般来说,函数文件是为了实现某种特定功能而编写的。(1)必须以function声明,一般带有输入参量和返回值(1)不使用function声明,一般不带有输入参量和返回值;(2)文件中的变量不会保留在工作区(2)文件中的变量会保留在工作区(3)不可以直接运行,必须函数调用的方式(3)可以直接运行函数文件命令文件《MATLAB程序设计》103举例:编写将华氏温度f转换成摄氏温度c的函数文件functionc=ftoc(f)c=5*(f-32)/9;在命令行窗口输入ftoc(70),执行结果如图:MATLAB程序如下:(1)在M文件编辑器中输入如下命令;(2)保存文件,并将其命名为ftoc.m注意(1)观察工作区变量(2)注意文件的保存路径完整的函数文件组成《MATLAB程序设计》104在线帮助文本区:函数主体:函数声明行:编写和修改记录:H1行:《MATLAB程序设计》1054.实时脚本文件除了基本的程序代码,还包括格式化文本、方程式、超链接和图像,而且运行代码时能实时显示输出结果,增强了代码的描述效果。

还可以将mlx文件转换输出为pdf等用于分享。《MATLAB程序设计》106第一:点击“新建实时脚本”,即打开如图所示的“实时编辑器”如何建立mlx文件第二:点击

“文本”,输入文本、公式等非M代码部分;《MATLAB程序设计》107第三:点击“代码”,输入命令;《MATLAB程序设计》108《MATLAB程序设计》109第四:点击“运行”,显示结果;《MATLAB程序设计》110第五:点击“保存”的下拉菜单“导出为pdf”《MATLAB程序设计》1113.2程序结构定义:编程语言提供表达复杂控制流程的手段,又被称为编程语言的控制结构。程序是一个语句序列执行程序就是按特定的次序执行程序中的语句。程序中执行点的变迁称为控制流程,当执行到程序中的某一条语句时,也说控制转到了该语句。顺序结构循环结构选择结构程序控制结构《MATLAB程序设计》1121.顺序结构定义:按照程序中语句的排列顺序依次执行的程序结构。举例:华氏温度转换为摄氏温度的M文件注意:input:用户从键盘输入数据的常用函数disp:系统的输出函数《MATLAB程序设计》113定义:根据条件成立或不成立,分别执行不同的语句的程序结构,又称为分支结构;

组成:if结构、switch-case结构、try-catch结构2.选择结构2.1if结构单分支:if-end双分支:if-else-end多分支:if-elseif-elseif-……-end《MATLAB程序设计》114(2)双分支if-else-end语句:分段函数,要求从任意从键盘输入一个数并计算结果if条件成立

语句组1else语句组2endif条件成立

语句组end(1)单分支if-end语句:《MATLAB程序设计》115(3)多分支if语句if条件1语句组1elseif条件2语句组2……elseif条件m语句组melse语句nend举例:输入一个字符,如为大写字母,则输入其对应的小写字母;如为小写字母,则输出对应的大写字母;如为数字,则输出对应的数值;如为其它字符,则原样输出。《MATLAB程序设计》116程序如下:《MATLAB程序设计》1172.2.switch语句switch表达式

case值1

语句组1case值2语句组2……case值m语句组motherwise语句组nend《MATLAB程序设计》118举例if语句和switch语句的差异《MATLAB程序设计》119if语句switch语句比较复杂,特别是嵌套使用可读性强,容易理解要调用strcmp函数比较不同长度的字符串可以比较不同长度的字符串可以检测相等和不相等仅检测相等《MATLAB程序设计》1202.3.try语句一种试探性执行语句,提供了一种捕获错误的机制:try语句组1catch语句组2end举例:矩阵乘法运算要求两矩阵的维数相容,否则会出错。先求两矩阵的乘积,如果出错,则自动转去求两矩阵的点乘《MATLAB程序设计》1213.循环结构3.1.for语句for循环变量=表达式1:表达式2:表达式3循环体语句end初值步长终值for循环变量=矩阵表达式循环体语句end注意:《MATLAB程序设计》122第一:针对向量的每一个元素执行一次循环体;第二:可以在循环体内修改循环变量的值;第三:3个表达式只被计算一次,一旦确定不可改变;第四:循环退出后,循环变量的值就是向量元素中最后一个值;第五:向量为空,循环体不执行;举例一个三位整数,各位数字的立方和等于该函数本身,则称该数为水仙花数,输出全部的水仙花数。《MATLAB程序设计》123程序如下:《MATLAB程序设计》1243.2.while语句while条件循环体语句end利用while循环实现S=1+2+…+100的值:注意和for循环的区别《MATLAB程序设计》1253.3程序的流程控制breakpausecontinue常用的流程控制命令returnechowarningerror《MATLAB程序设计》1261.break命令终止程序循环,通常和if语句结合使用在多层嵌套循环中,只终止最内层的循环《MATLAB程序设计》1272.continue命令控制跳过循环体中的某些语句。当在循环体内执行到该语句时,程序将跳过循环体中所有剩余的语句,继续下一次循环。常在for或while语句中与if配对使用举例:键盘任意输入一个整数n,求(n-1)!《MATLAB程序设计》1283.return命令使正在运行的函数正常结束并返回到命令行窗口或调用它的函数位置三者之间的区别continue:用于循环控制,当不想执行循环体的全部语句,只想在做完某一步后直接返回,后面的语句将被跳过;break:用在for或while循环中,结束本层循环,继续执行循环之后的下一条语句;return:终止当前命令的继续执行,控制权交给调用函数或命令行窗口(键盘);《MATLAB程序设计》129《MATLAB程序设计》130用来使程序暂停,然后根据用户的设定来选择何时继续进行。4.pause命令使用格式pausepause(n)pause(state)暂停执行M文件,n秒后恢复执行state只有两个选项,一个为on,一个是off《MATLAB程序设计》131

举例《MATLAB程序设计》1325.echo命令语句回显:在函数或脚本执行期间显示系统执行的语句echoonechooff对所有脚本文件中的语句启用回显。在所有脚本文件中禁用语句回显。echo

在上述两个命令中进行切换《MATLAB程序设计》1336.warning命令用于在程序运行时给出必要的警告信息。warning(‘message’)显示警告信息为“message”,其中message是文本信息显示警告信息为“message”,其中message包含转义字符,且每个转义字符的值将被转化为a1、a2…的值warning(‘message’,a1,a2…)举例编制一个能计算以5为底的对数计算,要求当输入参数不符合对数计算规则时,给出必要的警告信息。《MATLAB程序设计》134《MATLAB程序设计》1357.error命令用于显示错误信息,同时返回键盘控制。error(‘message’)终止程序并显示错误信息message终止程序并显示错误信息message,其中message包含转义字符error(‘message’,a1,a2…)与warning类似,可将上述程序中warning替换成error《MATLAB程序设计》136error与warning、disp的区别warning可以使用在程序的任何位置,但不影响程序的正常运行error可以使用在程序的任何位置,执行后立即终止程序运行warning显示的文本信息为橘黄色,且有声音提示;error显示的文本信息为红色,有声音提示;disp显示的文本信息为黑色,无声音提示;《MATLAB程序设计》1373.4程序的调试程序出现错误或者输出结果与预期结果不一致,就需要对所编写的程序进行调试。错误根据系统提示进行设置断点进行语法错误程序逻辑错误调试方法《MATLAB程序设计》1381.根据系统提示信息进行调试系统会针对语法问题给出警告信息或错误信息大部分语法错误系统会检测出来,并给出相应的错误信息《MATLAB程序设计》139断点:是指用来临时中断M文件执行的一个标志。2.设置断点调试(1)断点设置方法M编辑器中,按F12可将某一行设置为断点利用dbstop命令设置M编辑器中,选择“断点”

“设置/清除”dbstopinmfiledbstopinmfileatLineNodbstopinmfileifexpressiondbstopifconditiondbstop(b)《MATLAB程序设计》140(2)清除断点方法M编辑器中,按F12可将某一行清除断点利用dbclear命令清除M编辑器中,选择“断点”

“设置/清除”dbclearalldbclearinmfileatLineNodbclearinmfiledbclearifcondition《MATLAB程序设计》141(3)列出全部断点dbstatus命令dbstatusdbstatus-completenamesdbstatusmfiledbstatusfile-completenames列出包括错误、警告以及nan\inf在内的所有断点列出M文件mfile.m所有断点为每个断点显示包含该断点的函数或文件的完全限定名为指定文件每个断点显示包含该断点的函数或文件的完全限定名《MATLAB程序设计》142dbstepdbstepindbstepNdbstepout执行当前M文件断点处的下一行执行当前M文件断点处的第N行与dbstep函数类似运行当前函数的其余代码,并在退出函数后立即暂停(4)从断点处继续执行程序dbstep命令注意:dbcont命令也可以实现此功能,它可以执行所有行程序直至遇到下一个断点或到达M文件的末尾《MATLAB程序设计》143dbstackdbstack(n)显示导致当前断点产生的调用函数的名称及行号,并按他们的执行次序将其列出在显示中省略前n个堆栈帧(5)断点的调用关系dbstack命令(6)进入与退出调试模式断点设置好之后,按F5键进入调试模式当程序出现错误,系统自动退出,如要强行退出调试模式,输入dbquit命令。《MATLAB程序设计》144举例——调试程序my_test1《MATLAB程序设计》145补充:利用调试工具进行程序调试输入命令麻烦,可以采用调试工具进行举例——调试程序my_test1《MATLAB程序设计》146断点设置完成后,点击如图所示的“运行并前进”按钮,进入调试模式《MATLAB程序设计》147进入调试模式,命令按钮也有所变化,如图,步进:单步运行,单击一次,程序运行一次,但不进入函数步入:单步运行。遇到函数时进入函数,仍单步运行步出:停止单步运行《MATLAB程序设计》1483.5程序的性能分析与优化因设计思路不同,其程序也多种多样,导致执行效率差别较大,尤其是数据规模大时,差距更为明显。需要借助工具分析程序运行时间的耗时长短从而确定程序性能好坏。分析方法利用profile(探查器)函数利用tic和toc两个计时函数组合(一)性能分析:利用timeit函数《MATLAB程序设计》1491.profile函数探查函数的执行时间找出影响运行速度的“瓶颈”所在《MATLAB程序设计》150预设->字体->自定义->探查器->桌面代码或者其他字体,然后应用确定一下。探测器界面如何调出?timeit:测量运行函数所需的时间《MATLAB程序设计》1512.timeit函数注意:多次调用指定的函数,并计算测量结果的中位数。基本语法为:t=timeit(f)或t=timeit(f,n)《MATLAB程序设计》152

tic:启动秒表计时器,记录当前时间3.tic和toctoc:从秒表读取已用时间

tic

toc

函数结合使用,可以测量执行某行命令需要的时间。《MATLAB程序设计》153连续调用tic函数会覆盖内部记录的开始时间。clear函数不会重置tic函数调用记录的起始时间。有时程序运行速度太快,导致tic和toc无法提供有用的数据。如果您的代码运行速度快于1/10秒,请考虑测量它在循环中运行的时间,然后求平均值以计算单次运行的时间。以下操作会导致意外输出:使用tic和toc确定timeit的时间在timeit计时的函数内使用tic和toc注意事项《MATLAB程序设计》154(二)程序优化如何提高程序的运行速度是重点考虑的问题。

(1)采用向量化运算y=0;n=1000;fori=1:ny=y+1/(2*i-1);endyn=1000;i=1:2:2*n-1;y=sum(1./i);y《MATLAB程序设计》

(2)预分配内存空间在循环之前预分配向量或数组的内存空间,可有效提高运行速度。cleara=0;forn=2:1000;a(n)=a(n-1)+10;endclear;a=zeros(1,1000)forn=2:1000;a(n)=a(n-1)+10;end《MATLAB程序设计》156

(3)减少运算强度一般来说,乘法比乘方快,加减比乘除快。cleara=rand(32);x=a.^3;x=a.*a.*a;《MATLAB程序设计》157举例——用筛选法求某自然数范围内容全部素数《MATLAB程序设计》158补充:函数调用调用的一般格式:[输出实参表]=函数名(输入参数表)1、各实参出现的顺序、个数,应与函数定义时一致;2、调用时,实参传递给形参,从而实现参数传递,从而执行函数功能;例:利用函数文件,实现平面坐标到极坐标之间的转换建立函数文件my_tran.m在my_main1.m中调用my_tran函数递归调用《MATLAB程序设计》159函数可以嵌套调用,一个函数调用它自身称为函数的递归调用MATLAB中有专门用于阶乘运算的命令:factorial递归调用设计不当,容易陷入死循环!160MATLAB程序设计《MATLAB程序设计》161第四章数据可视化4.1二维图形绘制4.2三维图形绘制4.1二维图形绘制《MATLAB程序设计》162在MATLAB中,绘制直角坐标系下的二维曲线可以利用plot函数。这是最基本且应用最为广泛的绘图函数。plot函数的基本调用格式为:plot(x,y)4.1.1绘制单根二维曲线

例4-1在0≤x≤2π区间内,绘制曲线x=0:pi/100:2*pi;y=x.^2.*cos(4*pi*x);figureplot(x,y,'k-','LineWidth',1.5)xlim([min(x),max(x)]);xlabel('x');ylabel('y');4.1二维图形绘制《MATLAB程序设计》163例4-2绘制曲线,4.1.1绘制单根二维曲线

这是以参数方程的形式给出的二维曲线,只要给定参数向量,再分别求出x,y向量即可绘出曲线t=0:pi/100:2*pi;x=t.*cos(3*t);y=t.*cos(t).^2;figureplot(x,y,'k-','LineWidth',1.5)xlabel('x’);

ylabel('y');4.1二维图形绘制《MATLAB程序设计》1644.1.1绘制单根二维曲线

plot函数最简单的调用格式是只包含一个输入参数x,调用格式为plot(x),在这种情况下,当x是实向量时,以该向量元素的下标为横坐标,元素值为纵坐标画出一条连续曲线,这实际上是绘制折线图。x=0:pi/100:2*pi;y=x.^2.*cos(4*pi*x);figureplot(y,'k-','LineWidth',1.5)xlim([0,length(y)])xlabel('数据点');ylabel('y');

以例题4-1为例,采用plot(x)格式绘制图形4.1二维图形绘制《MATLAB程序设计》1654.1.2绘制多根二维曲线

调用形式:(1)plot函数的输入参数是矩阵形式;(2)含多个输入参数的plot函数;(3)具有两个纵坐标标度的图形4.1二维图形绘制《MATLAB程序设计》1664.1.2绘制多根二维曲线

(1)plot函数的输入参数是矩阵形式①当x是向量,y其中一维与x保持相同长度时,则绘制出多根不同颜色的曲线。曲线条数等于y矩阵的另一维大小,x被作为这些曲线共同的横坐标。x=linspace(-pi,pi,100);y=[exp(x*i);2*exp(x*i);3*exp(x*i)]';figureplot(y,'LineWidth',1.5);xlim([min(x),max(x)]);xlabel('x');ylabel('y’);legend('Line1','Line2','Line3')4.1二维图形绘制《MATLAB程序设计》1674.1.2绘制多根二维曲线

(1)plot函数的输入参数是矩阵形式②

当x、y是同型矩阵时,则以x、y对应列元素为横、纵坐标分别绘制曲线,曲线条数等于矩阵的列数。x1=linspace(0,pi,100);x2=linspace(2*pi,3*pi,100);x3=linspace(4*pi,5*pi,100);x=[x1;x2;x3]';y=[tan(x1);tan(x2);tan(x3)]';figureplot(x,y,'LineWidth',1.5);xlabel('x');ylabel('y');legend('Line1','Line2','Line3')4.1二维图形绘制《MATLAB程序设计》1684.1.2绘制多根二维曲线

(2)含多个输入参数的plot函数

plot函数可以包含若干组向量对,每一向量对可以绘制一条曲线,含多个输入参数的plot函数调用格式为:plot(x1,y1,x2,y2,...,xn,yn)>>x1=linspace(0,2*pi,100);>>x2=linspace(0,3*pi,100);>>x3=linspace(0,4*pi,100);>>plot(x1,sin(x1),x2,1+sin(x2),x3,2+sin(x3))4.1二维图形绘制《MATLAB程序设计》1694.1.2绘制多根二维曲线

(2)含多个输入参数的plot函数②当输入参数有矩阵形式时,配对的x、y按对应列元素为横、纵坐标分别绘制曲线,曲线条数等于矩阵的列数。>>xl=linspace(0,2*pi,100);>>x2=linspace(0,3*pi,100);>>x3=linspace(0,4*pi,100);>>y1=sin(x1);>>y2=1+sin(x2);>>y3=2+sin(x3)

温馨提示

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

最新文档

评论

0/150

提交评论