1、2022年7月25日第1页第1章 MATLAB R2018b简介 MATLAB R2018b 基础教程基础教程 教学目标教学目标教学重点教学重点教学内容教学内容2022年7月25日第2页教学目标 了解 MATLAB 语言的基本功能和特点 了解 MATLAB 的基本界面 了解 MATLAB 的路径搜索2022年7月25日第3页教学重点 了解 MATLAB 语言的基本功能 了解 MATLAB 语言的基本特点 熟悉 MATLAB 的基本界面 了解 MATLAB 的路径搜索2022年7月25日第4页教学内容 MATLAB 简 介 MATLAB R2018b 用户界面 MATLAB R2018b的路径搜
2、索 2022年7月25日第5页MATLAB 概述(1/3)MATLAB作为一种高级科学计算软件,是进行算法开发、数据可视化、数据分析以及数值计算的交互式应用开发环境。世界上许多科研工作者都在使用MATLAB产品来加快他们的科研进程,缩短数据分析和算法开发的时间,研发出更加先进的产品和技术。相对于传统的 C、C+或者Fortran语言,MATLAB提供了高效快速解决各种科学计算问题的方法。目前,MATLAB产品已经被广泛认可为科学计算领域内的标准软件之一。2022年7月25日第6页MATLAB 概述(2/3)MATLAB可以被广泛地应用于不同领域,如信号与图像处理、控制系统设计与仿真、通信系统设
3、计与仿真、测量测试与数据采集、金融数理分析以及生物科学等。在MATLAB中内嵌了丰富的数学、统计和工程计算函数,使用这些函数进行问题的分析解答,无论是问题的提出还是结果的表达都采用工程师习惯的数学描述方法,这一特点使MATLAB成为了数学分析、算法开发及应用程序开发的良好环境。MATLAB是MathWorks产品家族中所有产品的基础。附加的工具箱扩展MATLAB基本环境用于解决特定领域的工程问题。2022年7月25日第7页MATLAB 概述(3/3)MATLAB有以下几个特点。高级科学计算语言。代码、数据文件的集成管理环境。算法设计开发的交互式工具。用于线性代数、统计、傅立叶分析、滤波器设计、
4、优化和数值计算的基本数学函数。2-D和3-D数据可视化。创建自定义工程师图形界面的工具。与第三方算法开发工具 C/C+、FORTRAN、Java、COM、Microsoft Excel 集成开发基于 MATLAB的算法。2022年7月25日第8页MATLAB 的基本功能(1/2)MATLAB将高性能的数值计算和可视化功能集成,并提供了大量的内置函数,从而被广泛地应用于科学计算、控制系统和信息处理等领域的分析、仿真和设计工作,而且利用MATLAB产品的开放式结构,可以很容易地对MATLAB的功能进行扩充,从而在不断深化对问题认识的同时,不断完善MATLAB产品以提高产品自身的竞争能力。2022年
5、7月25日第9页MATLAB 的基本功能(2/2)数学计算功能 图形化显示功能 M语言编程功能 编译功能 图形用户界面开发功能 自动代码生成功能 Simulink建模仿真功能2022年7月25日第10页MATLAB 的更新(1/1)MATLAB R2018b更新了多个产品模块,添加了新的特性,包括 MATLAB、Simulink和 Polyspace产品的新功能,以及对 77 种其他产品的更新和补丁修复。MATLAB MATLAB CompilerImage Processing Toolbox Statistics ToolboxSystem Identification Toolbox H
6、DL CoderHDL Verifier MATLAB CoderEmbedded Coder Computer Vision System ToolboxCommunications System Toolbox SimulinkSimMechanics Real-Time Windows Target2022年7月25日第11页启动 MATLAB R2018b(1/1)选择“开始”|“所有程序”|MATLAB|R2018b|MATLAB R2018b命令,或者直接双击桌面上的MATLAB图标,启动 MATLAB R2018b。2022年7月25日第12页MATLAB R2018b的主界面(
7、1/1)当前目录窗口快捷按钮编辑器窗口功能区带状工具栏当前目录路径文件详细信息窗口工作区窗口命令提示符命令窗口2022年7月25日第13页MATLAB R2018b的带状工具栏(1/3)2022年7月25日第14页MATLAB R2018b的带状工具栏(2/3)2022年7月25日第15页MATLAB R2018b的带状工具栏(3/3)2022年7月25日第16页MATLAB R2018b的窗口l命令窗口l命令历史记录窗口l工作区窗口l当前目录窗口2022年7月25日第17页MATLAB 的当前路径 查看 MATLAB当前路径的方式有两种:查看工具栏中的当前路径栏,或者在命令窗口中输入查看命令
8、。cdD:Program FilesMATLABR2018bbin 用户可以通过工具栏中的当前路径工具改变当前路径。2022年7月25日第18页MATLAB 的路径搜索(1/2)路径设置 选择MATLAB窗口中的“主页”|“环境”|“设置路径”命令,打开路径搜索对话框。用户可以单击“添加文件夹”或者“添加并包含子文件夹”按钮添加选中目录或者添加选中目录及其子目录。单击后,打开浏览文件夹对话框,选择待添加的路径。在命令窗口中输入path命令可以查看MATLAB中的搜索路径,pathMATLABPATHC:UserslenovoDocumentsMATLABD:Program FilesMATLA
9、BR2018btoolboxmatlabdatafunD:Program FilesMATLABR2018btoolboxmatlabdatatypesr2022年7月25日第19页MATLAB 的路径搜索(2/2)MATLAB 的搜索顺序 以元素 foo 为例:1)查找工作区中是否存在名为 foo 的变量;2)在当前路径中查找是否存在名 foo.m 的文件;3)按照顺序查找搜索路径中是否存在该文件。如果存在多个名为 foo.m 的文件,则调用首先查到的文件。2022年7月25日第20页第2章 MATLAB的基本使用方法 MATLAB R2018b 基础教程基础教程 清华大学出版社清华大学出版
10、社教学目标教学目标教学重点教学重点教学内容教学内容2022年7月25日第21页教学目标 掌握利用MATLAB R2018b的命令窗口进行简单的数学运算 掌握常用的操作命令和快捷键 了解MATLAB R2018b的数据类型 了解MATLAB R2018b的操作符 了解MATLAB R2018b的基本数学函数 了解MATLAB R2018b脚本编程2022年7月25日第22页教学重点 掌握利用MATLAB R2018b的命令窗口进行简单的数学运算 掌握常用的操作命令和快捷键 了解MATLAB R2018b的数据类型 了解MATLAB R2018b的操作符2022年7月25日第23页教学内容 简单的
11、数学运算 常用的操作命令和快捷键 MATLAB R2018b 的数据类型 MATLAB R2018b 的运算符 MATLAB的一些基础函数 MATLAB脚本文件 2022年7月25日第24页简单的数学运算(1/5)最简单的计算器使用法 直接输入法 存储变量法 在大多数情况下,MATLAB对空格不予处理,因此在书写表达式时,可以利用空格调整表达式的格式,使表达式更易于阅读。在MATLAB表达式中,遵守四则运算法则,与通常法则相同。即运算从左到右进行,乘法和除法优先于加减法,指数运算优先于乘除法,括号的运算级别最高;在有多重括号存在的情况下,从括号的最里边向最外边逐渐扩展。需要注意的是,在MATL
12、AB中只用小括号代表运算级别,中括号只用于生成向量和矩阵,花括号用于生成单元数组。2022年7月25日第25页简单的数学运算(2/5)MATLAB中的常用数学函数 MATLAB提供的基本初等函数包括三角函数、指数函数和对数函数、复数函数、取整和求余函数、坐标变换函数、数理函数和一些特殊函数。2022年7月25日第26页简单的数学运算(3/5)MATLAB 的数学运算符 需要注意的是,右除和左除的意义并不相同。右除为常规的除法,而左除的意义为:ab=b/a。2022年7月25日第27页简单的数学运算(4/5)标点符号的使用 在 MATLAB 中,标点符号有着充分的意义,可以用标点符号进行运算,或
13、者标点符号可以包含特定的意义。2022年7月25日第28页简单的数学运算(5/5)分号(;)分号用于区分数组的行,或者用于一个语句的结尾处,取消运行显示。百分号(%)该符号用于在程序文本中添加注释,增加程序的可读性。百分号之后的文本都将视作注释,系统不对其进行编译。2022年7月25日第29页常用的操作命令和快捷键(1/3)为方便用户操作,MATLAB 中定义了一些快捷键。掌握一些常用的操作命令和快捷键,可以使得对 MATLAB 的操作更加便利。2022年7月25日第30页常用的操作命令和快捷键(3/3)快捷键功能快捷键功能(Ctrl+p)调用上一行Home(ctrl+a)移动到命令行开头(C
14、trl+n)调用下一行End(ctrl+e)移动到命令行结尾(Ctrl+b)光标左移一个字符Ctrl+Home移动到命令窗口顶部(Ctrl+f)光标右移一个字符Ctrl+End移动到命令窗口底部Ctrl+光标左移一个单词Shift+Home选中光标和表达式开头之间的内容Ctrl+光标右移一个单词Shift+End选中光标和表达式结尾之间的内容Esc取消当前输入行Ctrl+k剪切光标和表达式结尾之间的内容2022年7月25日第31页常用的操作命令和快捷键(2/3)命令功能命令功能cd显示或改变工作目录hold图形保持命令clc清空命令窗口load加载指定文件中的变量clear清除工作区中的变量p
15、ack整理内存碎片clf清除图形窗口path显示搜索目录diary日志文件命令quit退出 MATLABdir显示当前目录下文件save保存内存变量disp显示变量或文字的内容type显示文件内容echo命令窗口信息显示开关2022年7月25日第32页MATLAB R2018b 的数据类型(1/1)整数 浮点数 复数 逻辑变量 各种数据类型之间的转换 数据类型操作函数 变量 系统预定义的特殊变量 2022年7月25日第33页整数(1/1)MATLAB 支持8位、16位、32位和64位的有符号和无符号整数数据类型。整数数据类型除了定义范围不同外,具有相同的性质。2022年7月25日第34页浮点数
16、(1/1)MATLAB 的默认数据类型是双精度类型(double)。为了节省存储空间,MATLAB 也支持单精度数据类型的数组。单精度和双精度数据类型的取值范围和精度可以通过例 2-12 的方式进行查看 2022年7月25日第35页复数(1/2)复数由两个部分组成:实部和虚部。基本虚数单位等于,在 MATLAB 中虚数单位由 i 或者 j 表示。MATLAB 中可以通过两种方法创建复数,第一种方法为直接输入法,另一种创建复数的方法为通过 complex 函数。2022年7月25日第36页复数(2/2)complex 函数的调用方法如下。c=complex(a,b),返回结果 c 为复数,其实部
17、为 a,虚部为 b。输入参数 a 和 b 可以为标量,或者维数、大小相同的向量、矩阵或者多维数组,输出参数和 a 和 b 的结构相同。a 和 b 可以有不同的数据类型,当 a 和 b 为各种不同的类型时,返回值分别为:当 a 和 b 中有一个为单精度时,返回结果为单精度;如果 a 和 b 其中一个为整数类型,则另外一个必须有相同的整数类型,或者为双精度型,返回结果 c 为相同的整数类型。c=complex(a),只有一个输入参数,返回结果 c 为复数,其实部为 a,虚部为 0。但是此时 c 的数据类型为复数。2022年7月25日第37页逻辑变量(1/4)逻辑数据类型通过 1 和 0 分别表示逻
18、辑真和逻辑假。一些 MATLAB 函数或操作符会返回逻辑真或逻辑假表示条件是否满足。如表达式(5*10)40 返回逻辑真。在 MATLAB 中,存在逻辑数组,如下面的表达式返回逻辑数组:30 40 50 60 70 40ans=0 0 1 1 12022年7月25日第38页逻辑变量(2/4)逻辑数组的创建 创建逻辑数组的最简单的方法为直接输入元素的值为 true 或者 false 逻辑数组也可以通过逻辑表达式生成2022年7月25日第39页逻辑变量(3/4)逻辑数组的应用 用于条件表达式 如果仅当条件成立时执行某段代码,可以应用逻辑数组进行判断和控制 用于数组索引在 MATLAB 中支持通过一
19、个数组对另一个数组进行索2022年7月25日第40页逻辑变量(4/4)逻辑数组的判断 MATLAB 中提供了一组函数用于判断数组是否为逻辑数组 函数功能whos(x)显示数组 x 的元素值及数据类型islogical(x)判断数组 x 是否为逻辑数组,是则返回真isa(x,logical)判断数组 x 是否为逻辑数组,是则返回真class(x)返回数组 x 的数据类型cellfun(islogical,x)判断单元数组的每个单元是否为逻辑值2022年7月25日第41页各种数据类型之间的转换(1/1)在 MATLAB 中,各种数据类型之间可以互相转化,转化方式为:1)datatype(varia
20、ble),其中 datatype 为目标数据类型,variable 为待转化的变量;2)cast(x,type),将x的类型转化为type指定的类型。转化时,如果由高精确度数据类型转化为低精确度数据类型,则对数据进行四舍五入;如果由定义范围大的数据类型转化为定义范围小的数据类型,则返回目标数据类型的上限或下限。2022年7月25日第42页数据类型操作函数(1/1)函数描述double创建或转化为双精度类型single创建或转化为单精度类型int8,int16,int32,int64创建或转化为相应的有符号整数类型uint8,uint16,uint32,uint64创建或转化为相应的无符号整数类
21、型isnumeric判断是否为整数或浮点数,是则返回true(或者1)isinteger判断是否为整数,是则返回true(或者1)isfloat判断是否为浮点数,是则返回true(或者1)isa(x,type)判断是否为 type 指定的类型,是则返回true(或者1)cast(x,type)设置x的类型为 typeintmax(type)type 类型的最大整数值intmin(type)type 类型的最小整数值realmax(type)type 类型的最大浮点实数值realmin(type)type 类型的最小浮点实数值eps(type)type 类型eps值eps(x)变量x的eps值2
22、022年7月25日第43页变量(1/1)MATLAB 的变量命名规则与其他计算机语言类似,这一节介绍 MATLAB 的命名规则。首先,变量名必须是一个单一的词,不能包含空格,另外其命名必须符合下列规则:(1)变量名区分大小写。如 pi 和 Pi 是两个不同的变量。在命令窗口中输入如下的命令,查看其结果。(2)变量名长度不超过63个字符,超过的部分将会被忽略。(3)变量名必须以字母开始,其后可以为字母、数字或者下划线。MATLAB 中的变量名不支持其他符号,因为其他符号在 MATLAB 中具有特殊的意义。2022年7月25日第44页系统预定义的特殊变量(1/1)变 量 名描 述ans结果显示的默
23、认变量名beep使计算机发出“嘟嘟”声pi圆周率eps浮点数的精度(2.2204e-016),MALTAB中的最小数inf无穷大,如当除数为0时系统返回infNaN或nan表示不定数,即结果不能确定i或j虚数单位nargin函数的输入参数个数nargout函数的输出参数个数realmin可用的最小正实数2.2251e-308realmax可用的最大正实数值1.7977e+308bitmax可用的最大正整数(以双精度格式存储)varargin可变的函数输入参数个数varargout可变的函数输出参数个数2022年7月25日第45页MATLAB R2018b 的运算符(1/3)关系运算符 MATL
24、AB 的关系运算符能用来比较两个相同大小的数组,或用来比较一个数组和一个标量。MATLAB 的关系运算符包括所有常用的比较运算符。运算符说明运算符说明小于大于=大于或等于=等于=不等于2022年7月25日第46页MATLAB R2018b 的运算符(2/3)逻辑运算符 逻辑运算符主要包括“与”、“或”和“非”。使用逻辑运算符可以将多个表达式组合在一起,或者对关系表达式取反。运算符描述&与&与,只适用于标量。a&b,当 a 的值为假时,则忽略 b 的值|或|或,只适用于标量。a|b,当 a 的值为真时,则忽略 b 的值非2022年7月25日第47页MATLAB R2018b 的运算符(3/3)运
25、算符优先级 MATLAB 首先执行具有较高优先级的运算,然后执行具有较低优先级的运算;如果两个运算的优先级相同,则按从左到右的顺序执行。运算符圆括号()转置(.),共轭转置(),乘方(.),矩阵乘方()标量加法(+)、减法(-)、取反()乘法(.*),矩阵乘法(*),右除(./),左除(.),矩阵右除(/),矩阵左除()加法(+),减法(-),逻辑非()冒号运算符(:)小于(),小于等于(),大于等于(=),等于(=),不等于(=)数组逻辑与(&)数组逻辑或(|)逻辑与(&)逻辑或(|)2022年7月25日第48页MATLAB的一些基础函数(1/1)位操作函数 逻辑运算函数 集合函数 时间与日
26、期函数 2022年7月25日第49页位操作函数(1/1)所有数据在计算机中是转化为二进制进行操作的,因此,有必要对数据进行按位操作。函 数功 能调用格式举例bitand按位进行“与”操作C=bitand(A,B)bitcmp按位进行“补”操作C=bitcmp(A),C=bitcmp(A,n)bitget获取指定位置的值C=bitget(A,bit)bitmax获取双精度浮点整数的最大值bitmaxbitor按位进行“或”操作C=bitor(A,B)bitset设定指定位置的值C=bitset(A,bit),C=bitset(A,bit,v)bitshift移位操作C=bitshift(A,k)
27、,C=bitshift(A,k,n)bitxor按位进行“异或”操作C=bitxor(A,B)swapbytes按字节进行“逆”操作Y=swapbytes(X)2022年7月25日第50页逻辑运算函数(1/1)函 数功 能调用格式举例all判断数组元素是否全部非零B=all(A),B=all(A,dim)any判断数组是否存在非零元素B=any(A),B=any(A,dim)false逻辑0(假)False,false(n)等find查找非零元素的下标及其值ind=find(X),ind=find(X,k)等is*查看元素状态代表一类函数,如 iscell 等isa判断输入是否为给定类的对象K
28、=isa(obj,class_name)iskeyword判断字符串是否为 MATLAB关键字tf=iskeyword(str),iskeyword strisvarname判断字符串是否为有效变量名tf=isvarname(str),isvarname strlogical将数值变量转化为逻辑变量K=logical(A)true逻辑 1(真)True,true(n)等xor逻辑“异或”C=xor(A,B)2022年7月25日第51页集合函数(1/1)函 数功 能调用格式举例intersect计算两个集合的交集c=intersect(A,B)ismember集合的数组成员tf=ismember
29、(A,S)tf=ismember(A,S,rows)setdiff向量的集合差c=setdiff(A,B)c=setdiff(A,B,rows)issorted判断几何元素是否按序排列tf=issorted(A)tf=issorted(A,rows)setxor集合异或c=setxor(A,B)c=setxor(A,B,rows)union两个向量的集合并c=union(A,B)c=union(A,B,rows)unique删除集合中的重复元素b=unique(A)b=unique(A,rows)2022年7月25日第52页时间与日期函数(1/1)函 数功 能调用格式举例addtodate通过
30、域修改日期R=addtodate(D,N,F)calendar返回指定月的日历c=calendar,c=calendar(d)clock返回当前时间的向量c=clockcputime返回CPU运行时间cputimedate返回当前日期字符串str=datedatenum将时间和日期转化为日期格式N=datenum(V),N=datenum(S,F)datestr将时间和日期转化为字符串格式S=datestr(V),S=datestr(N)datevec将时间和日期转化为向量格式V=datevec(N),V=datevec(S,F)eomday返回指定月的最后一天E=eomday(Y,M)eti
31、me时间向量之间的时间间隔e=etime(t2,t1)now当前日期及时间t=nowtic,toc计时器tic any statements tocweekday返回指定日期的星期日期N,S=weekday(D)2022年7月25日第53页MATLAB脚本文件(1/4)对于一些简单的问题,当需要的命令数很少时,用户可以直接在 MATLAB 的命令窗口中输入命令。但是,对于多数问题,所需的命令较多,或者需要逻辑运算,进行流程控制,此时采用直接输入命令的方法则会引起不便。针对这些问题,一个合理的解决方法是使用脚本文件。脚本文件不接受输入参数,不返回任何值,而是代码的结合,该方法允许用户将一系列 M
32、ATLAB 命令输入到一个简单的脚本文件中,只要在 MATLAB 命令窗口中执行该文件,则会依次执行该文件中的命令。2022年7月25日第54页MATLAB脚本文件(2/4)脚本文件的用法 新建脚本文件(即M文件)可以通过4种方式进行:单击“主页”工具面板区域的“新建脚本”按钮;单击“主页”工具面板区域的“新建”按钮,在打开的下拉菜单中选择“脚本”选项;在当前目录窗口中右击,在弹出的菜单中选择“新建”|“脚本”命令;使用快捷键Ctrl+N。新建后系统会打开文件编辑窗口,在窗口中输入文件内容。2022年7月25日第55页MATLAB脚本文件(3/4)块注释 在 MATLAB 较早的版本中,注释是
33、逐行进行的,采用百分号(%)进行标记。逐行注释不利于用户增加和修改注释内容。在MATLAB 7.0及以后的版本中,用户可以使用“%”和“%”符号进行块注释,“%”和“%”分别代表注释块的起始和结束。2022年7月25日第56页MATLAB脚本文件(4/4)代码单元 一个代码单元指用户在 M 文件中指定的一段代码,以一个代码单元符号(两个百分号加空格,即“%”为开始标志,到另一个代码单元符号结束,如果不存在代码单元符号,则直到该文件结束。用户可以通过 MATLAB 编辑器中的 cell 菜单创建和管理代码单元。需要注意的是,代码单元只能在 MATLAB 编辑器窗口中创建和使用,而在 MATLAB
34、 命令窗口中是无效的。当作命令窗口中运行 M 文件时,将执行文件中的全部语句。2022年7月25日第57页第3章 数组和向量 MATLAB R2018b 基础教程基础教程 清华大学出版社清华大学出版社教学目标教学重点教学内容2022年7月25日第58页教学目标 掌握数组和向量的概念与性质 掌握数组与向量的操作和运算方法 了解数组与向量的实际应用2022年7月25日第59页教学重点 数组的创建方法 数组的操作 向量的创建方法 向量的操作2022年7月25日第60页教学内容 MATLAB数组 创建数组 数组操作 MATLAB向量2022年7月25日第61页MATLAB数组(1/1)数组是MATLA
35、B中的基本构件,数组中的单个数据项称为元素。任何变量在MATLAB中都是以数组形式存储和运算的。按照数组元素个数和排列方式分类 按照数组的存储方式分类2022年7月25日第62页创建数组(1/1)可以通过直接输入数值来创建数组,也可以通过MATLAB内置函数来创建具有某一特点的数组。使用“;”或者另起一行表明一行的结束,如A2,5,7;1,3,42。函数zeros(m,n)与ones(m,n)分别产生填充值为0或1的m行n列的数组。函数rand(m,n)与randn(m,n)分别产生取值为01之间的随机数的数组。函数diag()具有多种形式,最常用的是diag(A),其中A为一数组,它将A的对
36、角线上的元素作为向量返回;diag(V),其中V为一向量,它返回一个对角线为V的方阵。MATLAB还提供了magic(m)函数,它产生一个填充1到m2之间数字的数组,其组织方式使得每一行、每一列以及对角线上的元素分别加起来等于相同的数。2022年7月25日第63页数组操作(1/1)获取数组中的元素 可以通过将需要获取元素的索引值用括号括起来的方式对数组中的元素进行寻址,其中第一个值为行索引值,第二个值为列索引值。也可以向数组中存储数值。如果在超出数组范围的位置写入时,MATLAB将自动对数组进行扩充。如果在数组当前元素位置和将要写入新数值的位置之间缺失数据的话,MATLAB会将缺失数据填充为0
37、。2022年7月25日第64页数组操作(2/2)数组算术操作 数组逻辑运算使用库函数数组连接数组切片数组重排线性化数组2022年7月25日第65页MATLAB向量(1/1)向量是对相似数据项的集合进行分组的最简单方式,向量是数据的一维分组。向量中单个的数据项通常称为元素(element)。向量元素的两个独立且截然不同的属性(数值及在向量中的位置)决定了其在某一特定向量中的唯一性。2022年7月25日第66页创建向量(1/1)创建向量有两种方法:使用一系列常值来创建向量。通过对已有的向量进行操作产生新的向量。2022年7月25日第67页向量尺寸(1/1)向量有一个专门的属性:向量的长度。在多数情
38、况下,该长度在向量创建时就已固定。MATLAB能够通过插入或删除元素来增加或减小向量的长度。函数length(V)返回数组大小中的最大值 对于向量,该数值即为其长度。2022年7月25日第68页向量索引(1/1)数值索引 逻辑索引 注意:命令窗口中显示的逻辑变量值是用1代表真,用0代表假。2022年7月25日第69页缩短向量(1/1)注意:实际中很少将缩短向量作为对问题的正确求解方法,而且这样做可能会导致逻辑混乱。有可能的话,要使用索引来对需要保留的元素进行复制。2022年7月25日第70页向量操作(1/1)MATLAB语言的本质核心在于具有丰富的数组和向量操作工具。有3种方法直接从对标量的操
39、作推广而来:(1)算术操作。(2)逻辑操作。(3)使用库函数。有两种方法是针对一般情况下的数组和特殊情况下的向量的:(1)连接。(2)切片(广义索引)。2022年7月25日第71页第4章 MATLAB 的数学运算 MATLAB R2018b 基础教程基础教程 清华大学出版社清华大学出版社教学目标教学重点教学内容2022年7月25日第72页教学目标 掌握多项式运算及插值 掌握函数操作 掌握微分方程2022年7月25日第73页教学重点 多项式运算及插值 函数操作 微分方程2022年7月25日第74页教学内容 多项式与插值 函数运算 微分方程2022年7月25日第75页多项式与插值(1/3)多项式的
40、表示 在MATLAB中多项式用一个行向量表示,向量中的元素为该多项式的系数,按照降序排列。多项式的四则运算 多项式的加减即为对应项系数的加减。多项式的乘法实际上是多项式系数向量之间的卷积运算,可以通过MATLAB中的卷积函数conv来完成。多项式的除法为乘法的逆运算,可以通过反卷积函数deconv来实现。2022年7月25日第76页多项式与插值(2/3)多项式的其他运算函数功能roots多项式求根polyval多项式求值polyvalm矩阵多项式求值polyder多项式求导poly求矩阵的特征多项式;或者求一个多项式,其根为指定的数值polyfit多项式曲线拟合residue求解余项2022年
41、7月25日第77页多项式与插值(3/3)数据插值。插值运算中可选的方法。参数对应方法nearest最近邻插值linear线性插值spline三次样条插值pchip或cubic三次插值2022年7月25日第78页函数运算(1/5)函数的表示 利用M文件将函数定义为MATLAB函数 采用匿名函数的方式 数学函数图像的绘制 fplot函数的调用方式:(1)fplot(fun,xinterval),y=f(x)。fun可以为MATLAB函数的M文件名;也可以是包含变量x的字符串,该字符串可以传递给函数eval;还可以是函数句柄。(2)参数 limits用于指定绘制图像的范围。limits是一个向量,用
42、于指定x轴的范围,格式为xmin xmax。不设 limits值,默认x轴区间为-5 5。2022年7月25日第79页函数运算(2/5)函数极值 一元函数的极小值 多元函数的极小值2022年7月25日第80页函数运算(3/5)函数求解 使用函数fzero来求一元函数的零点,该函数的调用格式如下:(1)x=fzero(fun,x0),x=fzero(fun,x1,x2):寻找x0附近或者区间x1,x2内fun的零点,返回该点的x坐标。(2)x=fzero(fun,x0,options),x=fzero(fun,x1,x2,options):通过options设置参数。(3)x,fval=fzer
43、o(.):返回零点的同时返回该点的函数值。(4)x,fval,exitflag=fzero(.):返回零点、该点的函数值及程序退出的标志。(5)x,fval,exitflag,output=fzero(.):返回零点、该点的函数值、程序退出的标志及选定的输出结果。2022年7月25日第81页函数运算(4/5)数值积分 一元函数的积分 一元函数的矢量积分 二重积分和三重积分2022年7月25日第82页函数运算(5/5)含参数函数的使用 用嵌套函数提供函数参数 用匿名函数提供函数参数2022年7月25日第83页微分方程(1/2)常微分方程初值问题 显式常微分方程 完全隐式常微分方程2022年7月2
44、5日第84页微分方程(2/2)常微分方程边值问题 bvp4c函数用于求解常微分方程边值问题,该函数调用格式如下:sol=bvp4c(odefun,bcfun,solinit)sol=bvp4c(odefun,bcfun,solinit,options)2022年7月25日第85页第5章 字符串、单元数组和结构体 MATLAB R2018b 基础教程基础教程 清华大学出版社清华大学出版社教学目标教学重点教学内容2022年7月25日第86页教学目标 掌握字符串的生成及操作 掌握单元数组的生成及操作 掌握结构体的生成及操作2022年7月25日第87页教学重点 字符串 单元数组 结构体2022年7月2
45、5日第88页教学内容 字符串 单元数组和结构体2022年7月25日第89页字符串(1/4)字符串的生成 MATLAB 中的字符串为 ASCII 值的数值数组,作为字符串表达式进行表示。在 MATLAB 中,生成字符串的方法为 stringname=the content of the string。2022年7月25日第90页字符串(2/4)字符串的操作 字符串的显示直接显示和利用 disp 函数进行显示。字符串的执行在 MATLAB 中可以用函数 eval 来执行字符串。字符串运算字符串的运算主要包括判断字符串是否相等,通过字符串运算来比较字符串中的字符,进行字符分类、查找与替换、字符串与数
46、值数组之间的相互转换等。2022年7月25日第91页字符串比较、查找和替换字符串的比较 字符串的比较主要为比较两个字符串是否相同,字符串中的子串是否相同和字符串中的个别字符是否相同。用于比较字符串的函数主要是strcmp和strncmp。字符串的查找和替换 查找与替换是字符串操作中的一项重要内容。用于查找的函数主要有findstr,strmatch、strrep、strtok等。字符串(字符串(3/4)2022年7月25日第92页字符串(4/4)字符串与数值之间的转化 函数功能备注uintN(如,uint8)将字符串转化为相应的无符号整数uint8(ab)97 98str2num将字符型转化为
47、数字型str2num(123.56)123.5600str2double与上一函数的功能相同,结果更精确一些,同时支持单元字符串数组double(123.56)49 50 51 46 53 54。hex2num将十六进制数转化为双精度数hex2num(A)-1.4917e-154hex2dec将十六进制数基数转化为正数hex2dec(B)11bin2dec将二进制转化为十进制bin2dec(1010)10base2dec将 N 底数字字符串转化为十进制base2dec(212,3)232022年7月25日第93页单元数组和结构体(1/3)MATLAB中的单元数组(cell array)和结构体
48、(structure)数据类型均是将不同的相关数据集成到一个单一的变量中,使得大量的相关数据的处理与引用变得简单而方便。2022年7月25日第94页单元数组和结构体(2/3)单元数组 单元数组的生成 单元数组的操作(1)单元数组元素的访问(2)单元数组的显示(3)单元数组的图形显示(4)单元数组元素的删除(5)改变单元数组的维数(6)改变数组的形状2022年7月25日第95页单元数组和结构体(3/3)结构体 结构体的生成 结构体的操作(1)添加成员变量(2)删除成员变量(3)调用成员变量2022年7月25日第96页第6章 MATLAB 编程MATLAB R2018b 基础教程基础教程 清华大学
49、出版社清华大学出版社教学目标教学重点教学内容2022年7月25日第97页教学目标 掌握 MATLAB的脚本文件及其编辑和调试方法 掌握 MATLAB的程序设计和开发流程 掌握 MATLAB 关系运算、逻辑运算及函数操作 掌握 MATLAB中的流程控制语句 了解 MATLAB的程序调试方法2022年7月25日第98页教学重点 MATLAB 的程序设计和开发流程 MATLAB 的关系运算、逻辑运算及函数操作 MATLAB 中的流程控制语句 MATLAB 程序调试方法2022年7月25日第99页教学内容 脚本文件和编辑器 程序设计和开发 关系运算符和逻辑变量 逻辑运算符和函数 条件语句 循环 swi
50、tch结构 调试MATLAB程序2022年7月25日第100页脚本文件和编辑器(1/11)在MATLAB中,用户可以使用两种方法执行运算:(1)在交互模式下,直接在命令窗口中输入所有的命令。(2)通过运行脚本文件中所存储的MATLAB程序。2022年7月25日第101页脚本文件和编辑器(2/11)创建和使用脚本文件创建和使用脚本文件 2022年7月25日第102页脚本文件和编辑器(3/11)有效使用脚本文件(1)脚本文件名必须满足MATLAB为变量命名的约定。(2)为脚本文件赋予的名称不要与其所计算的变量名称相同。(3)为脚本文件赋予的名称要与MATLAB命令或者函数的名称都不相同。(4)在交