2024年8月14日第1页第1章 MATLAB R2018b简介 MATLAB R2018b 基础教程基础教程 教学目标教学目标教学重点教学重点教学内容教学内容2024年8月14日第2页教学目标•了解 MATLAB 语言的基本功能和特点•了解 MATLAB 的基本界面•了解 MATLAB 的路径搜索2024年8月14日第3页教学重点•了解 MATLAB 语言的基本功能•了解 MATLAB 语言的基本特点•熟悉 MATLAB 的基本界面•了解 MATLAB 的路径搜索2024年8月14日第4页教学内容•MATLAB 简 介•MATLAB R2018b 用户界面•MATLAB R2018b的路径搜索 2024年8月14日第5页MATLAB 概述(1/3)•MATLAB作为一种高级科学计算软件,是进行算法开发、数据可视化、数据分析以及数值计算的交互式应用开发环境世界上许多科研工作者都在使用MATLAB产品来加快他们的科研进程,缩短数据分析和算法开发的时间,研发出更加先进的产品和技术相对于传统的 C、C++或者Fortran语言,MATLAB提供了高效快速解决各种科学计算问题的方法。
目前,MATLAB产品已经被广泛认可为科学计算领域内的标准软件之一2024年8月14日第6页MATLAB 概述(2/3)•MATLAB可以被广泛地应用于不同领域,如信号与图像处理、控制系统设计与仿真、通信系统设计与仿真、测量测试与数据采集、金融数理分析以及生物科学等在MATLAB中内嵌了丰富的数学、统计和工程计算函数,使用这些函数进行问题的分析解答,无论是问题的提出还是结果的表达都采用工程师习惯的数学描述方法,这一特点使MATLAB成为了数学分析、算法开发及应用程序开发的良好环境MATLAB是MathWorks产品家族中所有产品的基础附加的工具箱扩展MATLAB基本环境用于解决特定领域的工程问题2024年8月14日第7页MATLAB 概述(3/3)MATLAB有以下几个特点•高级科学计算语言•代码、数据文件的集成管理环境•算法设计开发的交互式工具•用于线性代数、统计、傅立叶分析、滤波器设计、优化和数值计算的基本数学函数•2-D和3-D数据可视化•创建自定义工程师图形界面的工具•与第三方算法开发工具—— C/C++、FORTRAN、Java、COM、Microsoft Excel—— 集成开发基于 MATLAB的算法。
2024年8月14日第8页MATLAB 的基本功能(1/2)•MATLAB将高性能的数值计算和可视化功能集成,并提供了大量的内置函数,从而被广泛地应用于科学计算、控制系统和信息处理等领域的分析、仿真和设计工作,而且利用MATLAB产品的开放式结构,可以很容易地对MATLAB的功能进行扩充,从而在不断深化对问题认识的同时,不断完善MATLAB产品以提高产品自身的竞争能力2024年8月14日第9页MATLAB 的基本功能(2/2)• 数学计算功能 • 图形化显示功能• M语言编程功能• 编译功能• 图形用户界面开发功能• 自动代码生成功能• Simulink建模仿真功能2024年8月14日第10页MATLAB 的更新(1/1) MATLAB R2018b更新了多个产品模块,添加了新的特性,包括 MATLAB、Simulink和 Polyspace产品的新功能,以及对 77 种其他产品的更新和补丁修复MATLAB MATLAB CompilerImage Processing Toolbox Statistics ToolboxSystem Identification Toolbox HDL CoderHDL Verifier MATLAB CoderEmbedded Coder Computer Vision System ToolboxCommunications System Toolbox SimulinkSimMechanics Real-Time Windows Target2024年8月14日第11页启动 MATLAB R2018b (1/1) • 选择“开始”|“所有程序”| MATLAB| R2018b | MATLAB R2018b命令,或者直接双击桌面上的MATLAB图标,启动 MATLAB R2018b。
2024年8月14日第12页MATLAB R2018b的主界面(1/1) 当前目录窗口快捷按钮编辑器窗口功能区带状工具栏当前目录路径文件详细信息窗口工作区窗口命令提示符命令窗口2024年8月14日第13页MATLAB R2018b的带状工具栏(1/3)2024年8月14日第14页MATLAB R2018b的带状工具栏(2/3)2024年8月14日第15页MATLAB R2018b的带状工具栏(3/3)2024年8月14日第16页MATLAB R2018b的窗口命令窗口命令历史记录窗口工作区窗口当前目录窗口2024年8月14日第17页MATLAB 的当前路径•查看 MATLAB当前路径的方式有两种:查看工具栏中的当前路径栏,或者在命令窗口中输入查看命令>> cdD:\Program Files\MATLAB\R2018b\bin•用户可以通过工具栏中的当前路径工具改变当前路径2024年8月14日第18页MATLAB 的路径搜索 (1/2)路径设置•选择MATLAB窗口中的“主页”|“环境” |“设置路径”命令,打开路径搜索对话框用户可以单击“添加文件夹”或者“添加并包含子文件夹”按钮添加选中目录或者添加选中目录及其子目录。
单击后,打开浏览文件夹对话框,选择待添加的路径•在命令窗口中输入path命令可以查看MATLAB中的搜索路径, >> pathMATLABPATHC:\Users\lenovo\Documents\MATLABD:\Program Files\MATLAB\R2018b\toolbox\matlab\datafunD:\Program Files\MATLAB\R2018b\toolbox\matlab\datatypesr……2024年8月14日第19页MATLAB 的路径搜索 (2/2)•MATLAB 的搜索顺序 以元素 foo 为例:•1)查找工作区中是否存在名为 foo 的变量;•2)在当前路径中查找是否存在名 foo.m 的文件;•3)按照顺序查找搜索路径中是否存在该文件如果存在多个名为 foo.m 的文件,则调用首先查到的文件2024年8月14日第20页第2章 MATLAB的基本使用方法 MATLAB R2018b 基础教程基础教程 清华大学出版社清华大学出版社教学目标教学目标教学重点教学重点教学内容教学内容2024年8月14日第21页教学目标• 掌握利用MATLAB R2018b的命令窗口进行简单的数学运算• 掌握常用的操作命令和快捷键• 了解MATLAB R2018b的数据类型• 了解MATLAB R2018b的操作符• 了解MATLAB R2018b的基本数学函数• 了解MATLAB R2018b脚本编程2024年8月14日第22页教学重点• 掌握利用MATLAB R2018b的命令窗口进行简单的数学运算• 掌握常用的操作命令和快捷键• 了解MATLAB R2018b的数据类型• 了解MATLAB R2018b的操作符2024年8月14日第23页教学内容•简单的数学运算•常用的操作命令和快捷键•MATLAB R2018b 的数据类型•MATLAB R2018b 的运算符 •MATLAB的一些基础函数•MATLAB脚本文件 2024年8月14日第24页简单的数学运算(1/5)•最简单的计算器使用法•直接输入法 •存储变量法 在大多数情况下,MATLAB对空格不予处理,因此在书写表达式时,可以利用空格调整表达式的格式,使表达式更易于阅读。
在MATLAB表达式中,遵守四则运算法则,与通常法则相同即运算从左到右进行,乘法和除法优先于加减法,指数运算优先于乘除法,括号的运算级别最高;在有多重括号存在的情况下,从括号的最里边向最外边逐渐扩展需要注意的是,在MATLAB中只用小括号代表运算级别,中括号只用于生成向量和矩阵,花括号用于生成单元数组2024年8月14日第25页简单的数学运算(2/5)• MATLAB中的常用数学函数 MATLAB提供的基本初等函数包括三角函数、指数函数和对数函数、复数函数、取整和求余函数、坐标变换函数、数理函数和一些特殊函数 2024年8月14日第26页简单的数学运算(3/5)•MATLAB 的数学运算符 需要注意的是,右除和左除的意义并不相同右除为常规的除法,而左除的意义为:a\b=b/a 2024年8月14日第27页简单的数学运算(4/5)• 标点符号的使用 在 MATLAB 中,标点符号有着充分的意义,可以用标点符号进行运算,或者标点符号可以包含特定的意义 2024年8月14日第28页简单的数学运算(5/5)•分号(;) 分号用于区分数组的行,或者用于一个语句的结尾处,取消运行显示。
•百分号(%) 该符号用于在程序文本中添加注释,增加程序的可读性百分号之后的文本都将视作注释,系统不对其进行编译2024年8月14日第29页常用的操作命令和快捷键(1/3)•为方便用户操作,MATLAB 中定义了一些快捷键掌握一些常用的操作命令和快捷键,可以使得对 MATLAB 的操作更加便利 2024年8月14日第30页常用的操作命令和快捷键(3/3)快捷键功能快捷键功能↑(Ctrl + p)调用上一行Home(ctrl+a)移动到命令行开头↓(Ctrl + n)调用下一行End(ctrl+e)移动到命令行结尾←(Ctrl + b)光标左移一个字符Ctrl + Home移动到命令窗口顶部→(Ctrl + f)光标右移一个字符Ctrl + End移动到命令窗口底部Ctrl + ←光标左移一个单词Shift + Home选中光标和表达式开头之间的内容Ctrl + →光标右移一个单词Shift + End选中光标和表达式结尾之间的内容Esc取消当前输入行Ctrl + k剪切光标和表达式结尾之间的内容2024年8月14日第31页常用的操作命令和快捷键(2/3)命令功能命令功能cd显示或改变工作目录hold图形保持命令clc清空命令窗口load加载指定文件中的变量clear清除工作区中的变量pack整理内存碎片clf清除图形窗口path显示搜索目录diary日志文件命令quit退出 MATLABdir显示当前目录下文件save保存内存变量disp显示变量或文字的内容type显示文件内容echo命令窗口信息显示开关2024年8月14日第32页MATLAB R2018b 的数据类型(1/1)•整数 •浮点数 •复数 •逻辑变量 •各种数据类型之间的转换 •数据类型操作函数 •变量 •系统预定义的特殊变量 2024年8月14日第33页整数(1/1)•MATLAB 支持8位、16位、32位和64位的有符号和无符号整数数据类型。
•整数数据类型除了定义范围不同外,具有相同的性质2024年8月14日第34页浮点数(1/1)•MATLAB 的默认数据类型是双精度类型(double)为了节省存储空间,MATLAB 也支持单精度数据类型的数组 •单精度和双精度数据类型的取值范围和精度可以通过例 2-12 的方式进行查看 2024年8月14日第35页复数(1/2)•复数由两个部分组成:实部和虚部基本虚数单位等于,在 MATLAB 中虚数单位由 i 或者 j 表示•MATLAB 中可以通过两种方法创建复数,第一种方法为直接输入法,另一种创建复数的方法为通过 complex 函数 2024年8月14日第36页复数(2/2)•complex 函数的调用方法如下 •c = complex(a,b),返回结果 c 为复数,其实部为 a,虚部为 b输入参数 a 和 b 可以为标量,或者维数、大小相同的向量、矩阵或者多维数组,输出参数和 a 和 b 的结构相同a 和 b 可以有不同的数据类型,当 a 和 b 为各种不同的类型时,返回值分别为:•当 a 和 b 中有一个为单精度时,返回结果为单精度;•如果 a 和 b 其中一个为整数类型,则另外一个必须有相同的整数类型,或者为双精度型,返回结果 c 为相同的整数类型。
•c = complex(a),只有一个输入参数,返回结果 c 为复数,其实部为 a,虚部为 0但是此时 c 的数据类型为复数2024年8月14日第37页逻辑变量(1/4)•逻辑数据类型通过 1 和 0 分别表示逻辑真和逻辑假一些 MATLAB 函数或操作符会返回逻辑真或逻辑假表示条件是否满足如表达式 (5 * 10) > 40 返回逻辑真•在 MATLAB 中,存在逻辑数组,如下面的表达式返回逻辑数组:>> [30 40 50 60 70] > 40ans = 0 0 1 1 12024年8月14日第38页逻辑变量(2/4)•逻辑数组的创建 •创建逻辑数组的最简单的方法为直接输入元素的值为 true 或者 false •逻辑数组也可以通过逻辑表达式生成2024年8月14日第39页逻辑变量(3/4)•逻辑数组的应用 •用于条件表达式 如果仅当条件成立时执行某段代码,可以应用逻辑数组进行判断和控制 •用于数组索引在 MATLAB 中支持通过一个数组对另一个数组进行索2024年8月14日第40页逻辑变量(4/4)•逻辑数组的判断 •MATLAB 中提供了一组函数用于判断数组是否为逻辑数组 函数功能whos(x)显示数组 x 的元素值及数据类型islogical(x)判断数组 x 是否为逻辑数组,是则返回真isa(x, 'logical')判断数组 x 是否为逻辑数组,是则返回真class(x)返回数组 x 的数据类型cellfun('islogical', x)判断单元数组的每个单元是否为逻辑值2024年8月14日第41页各种数据类型之间的转换(1/1)•在 MATLAB 中,各种数据类型之间可以互相转化,转化方式为:•1)datatype(variable),其中 datatype 为目标数据类型,variable 为待转化的变量;•2)cast(x,’type’),将x的类型转化为’type’指定的类型。
•转化时,如果由高精确度数据类型转化为低精确度数据类型,则对数据进行四舍五入;如果由定义范围大的数据类型转化为定义范围小的数据类型,则返回目标数据类型的上限或下限2024年8月14日第42页数据类型操作函数(1/1)函数描述double创建或转化为双精度类型single创建或转化为单精度类型int8,int16,int32,int64创建或转化为相应的有符号整数类型uint8,uint16,uint32,uint64创建或转化为相应的无符号整数类型isnumeric判断是否为整数或浮点数,是则返回true(或者1)isinteger判断是否为整数,是则返回true(或者1)isfloat判断是否为浮点数,是则返回true(或者1)isa(x,’type’)判断是否为 ‘type’ 指定的类型,是则返回true(或者1)cast(x,’type’)设置x的类型为 ’type’intmax(‘type’)’type’ 类型的最大整数值intmin(‘type’)’type’ 类型的最小整数值realmax(‘type’)’type’ 类型的最大浮点实数值realmin(‘type’)’type’ 类型的最小浮点实数值eps(‘type’)’type’ 类型eps值eps(‘x’)变量x的eps值2024年8月14日第43页变量(1/1)•MATLAB 的变量命名规则与其他计算机语言类似,这一节介绍 MATLAB 的命名规则。
首先,变量名必须是一个单一的词,不能包含空格,另外其命名必须符合下列规则:•(1)变量名区分大小写如 pi 和 Pi 是两个不同的变量在命令窗口中输入如下的命令,查看其结果•(2)变量名长度不超过63个字符,超过的部分将会被忽略•(3)变量名必须以字母开始,其后可以为字母、数字或者下划线MATLAB 中的变量名不支持其他符号,因为其他符号在 MATLAB 中具有特殊的意义 2024年8月14日第44页系统预定义的特殊变量 (1/1) 变 量 名描 述ans结果显示的默认变量名beep使计算机发出“嘟嘟”声pi圆周率eps浮点数的精度(2.2204e-016),MALTAB中的最小数inf无穷大,如当除数为0时系统返回infNaN或nan表示不定数,即结果不能确定i或j虚数单位nargin函数的输入参数个数nargout函数的输出参数个数realmin可用的最小正实数2.2251e-308realmax可用的最大正实数值1.7977e+308bitmax可用的最大正整数(以双精度格式存储)varargin可变的函数输入参数个数varargout可变的函数输出参数个数2024年8月14日第45页MATLAB R2018b 的运算符(1/3)•关系运算符 MATLAB 的关系运算符能用来比较两个相同大小的数组,或用来比较一个数组和一个标量。
MATLAB 的关系运算符包括所有常用的比较运算符 运算符说明运算符说明<小于<=小于或等于>大于>=大于或等于==等于~=不等于2024年8月14日第46页MATLAB R2018b 的运算符(2/3)•逻辑运算符 逻辑运算符主要包括“与”、“或”和“非”使用逻辑运算符可以将多个表达式组合在一起,或者对关系表达式取反运算符描述&与&&与,只适用于标量a && b,当 a 的值为假时,则忽略 b 的值|或||或,只适用于标量a || b,当 a 的值为真时,则忽略 b 的值~非2024年8月14日第47页MATLAB R2018b 的运算符(3/3)•运算符优先级 MATLAB 首先执行具有较高优先级的运算,然后执行具有较低优先级的运算;如果两个运算的优先级相同,则按从左到右的顺序执行运算符圆括号 ()转置 (.’),共轭转置 (‘),乘方 (.^),矩阵乘方 (^)标量加法 (+)、减法 (-)、取反 (~)乘法 (.*),矩阵乘法 (*),右除 (./),左除 (.\),矩阵右除 (/),矩阵左除 (\)加法 (+),减法 (-),逻辑非 (~)冒号运算符 (:)小于 (<),小于等于 (<=),大于 (>),大于等于 (>=),等于 (==),不等于 (~=)数组逻辑与 (&)数组逻辑或 (|)逻辑与 (&&)逻辑或 (||)2024年8月14日第48页MATLAB的一些基础函数(1/1)•位操作函数 •逻辑运算函数 •集合函数 •时间与日期函数 2024年8月14日第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),C = bitshift(A, k, n)bitxor按位进行“异或”操作C = bitxor(A, B)swapbytes按字节进行“逆”操作Y = swapbytes(X)2024年8月14日第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 = 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)2024年8月14日第51页集合函数 (1/1) 函 数功 能调用格式举例intersect计算两个集合的交集c = intersect(A, B)ismember集合的数组成员tf = ismember(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')2024年8月14日第52页时间与日期函数 (1/1) 函 数功 能调用格式举例addtodate通过域修改日期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)etime时间向量之间的时间间隔e = etime(t2, t1)now当前日期及时间t = nowtic, toc计时器tic any statements tocweekday返回指定日期的星期日期[N, S] = weekday(D)2024年8月14日第53页MATLAB脚本文件(1/4)•对于一些简单的问题,当需要的命令数很少时,用户可以直接在 MATLAB 的命令窗口中输入命令。
但是,对于多数问题,所需的命令较多,或者需要逻辑运算,进行流程控制,此时采用直接输入命令的方法则会引起不便针对这些问题,一个合理的解决方法是使用脚本文件脚本文件不接受输入参数,不返回任何值,而是代码的结合,该方法允许用户将一系列 MATLAB 命令输入到一个简单的脚本文件中,只要在 MATLAB 命令窗口中执行该文件,则会依次执行该文件中的命令2024年8月14日第54页MATLAB脚本文件(2/4)•脚本文件的用法 新建脚本文件(即M文件)可以通过4种方式进行:单击“主页”工具面板区域的“新建脚本”按钮 ;单击“主页”工具面板区域的“新建”按钮 ,在打开的下拉菜单中选择“脚本”选项;在当前目录窗口中右击,在弹出的菜单中选择“新建”|“脚本”命令;使用快捷键Ctrl+N新建后系统会打开文件编辑窗口,在窗口中输入文件内容2024年8月14日第55页MATLAB脚本文件(3/4)•块注释 在 MATLAB 较早的版本中,注释是逐行进行的,采用百分号(%)进行标记逐行注释不利于用户增加和修改注释内容在MATLAB 7.0及以后的版本中,用户可以使用“%{”和“%}”符号进行块注释,“%{”和“%}”分别代表注释块的起始和结束。
2024年8月14日第56页MATLAB脚本文件(4/4)代码单元•一个代码单元指用户在 M 文件中指定的一段代码,以一个代码单元符号(两个百分号加空格,即“%% ”为开始标志,到另一个代码单元符号结束,如果不存在代码单元符号,则直到该文件结束用户可以通过 MATLAB 编辑器中的 cell 菜单创建和管理代码单元•需要注意的是,代码单元只能在 MATLAB 编辑器窗口中创建和使用,而在 MATLAB 命令窗口中是无效的当作命令窗口中运行 M 文件时,将执行文件中的全部语句2024年8月14日第57页第3章 数组和向量 MATLAB R2018b 基础教程基础教程 清华大学出版社清华大学出版社教学目标教学重点教学内容2024年8月14日第58页教学目标• 掌握数组和向量的概念与性质• 掌握数组与向量的操作和运算方法• 了解数组与向量的实际应用2024年8月14日第59页教学重点•数组的创建方法•数组的操作•向量的创建方法•向量的操作2024年8月14日第60页教学内容•MATLAB数组•创建数组•数组操作•MATLAB向量2024年8月14日第61页MATLAB数组(1/1) 数组是MATLAB中的基本构件,数组中的单个数据项称为元素。
任何变量在MATLAB中都是以数组形式存储和运算的•按照数组元素个数和排列方式分类•按照数组的存储方式分类2024年8月14日第62页创建数组 (1/1)•可以通过直接输入数值来创建数组,也可以通过MATLAB内置函数来创建具有某一特点的数组使用“;”或者另起一行表明一行的结束,如A=[2,5,7;1,3,42]•函数zeros(m,n)与ones(m,n)分别产生填充值为0或1的m行n列的数组函数rand(m,n)与randn(m,n)分别产生取值为0~1之间的随机数的数组函数diag()具有多种形式,最常用的是diag(A),其中A为一数组,它将A的对角线上的元素作为向量返回;diag(V),其中V为一向量,它返回一个对角线为V的方阵•MATLAB还提供了magic(m)函数,它产生一个填充1到m2之间数字的数组,其组织方式使得每一行、每一列以及对角线上的元素分别加起来等于相同的数2024年8月14日第63页数组操作 (1/1)• 获取数组中的元素 可以通过将需要获取元素的索引值用括号括起来的方式对数组中的元素进行寻址,其中第一个值为行索引值,第二个值为列索引值也可以向数组中存储数值。
如果在超出数组范围的位置写入时,MATLAB将自动对数组进行扩充如果在数组当前元素位置和将要写入新数值的位置之间缺失数据的话,MATLAB会将缺失数据填充为0 2024年8月14日第64页数组操作(2/2)•数组算术操作 •数组逻辑运算•使用库函数•数组连接•数组切片•数组重排•线性化数组2024年8月14日第65页MATLAB向量(1/1)•向量是对相似数据项的集合进行分组的最简单方式,向量是数据的一维分组•向量中单个的数据项通常称为元素(element)向量元素的两个独立且截然不同的属性(数值及在向量中的位置)决定了其在某一特定向量中的唯一性 2024年8月14日第66页创建向量(1/1)•创建向量有两种方法:•使用一系列常值来创建向量•通过对已有的向量进行操作产生新的向量 2024年8月14日第67页向量尺寸(1/1)•向量有一个专门的属性:向量的长度在多数情况下,该长度在向量创建时就已固定•MATLAB能够通过插入或删除元素来增加或减小向量的长度 •函数length(V)返回数组大小中的最大值 —— 对于向量,该数值即为其长度2024年8月14日第68页向量索引(1/1)•数值索引 •逻辑索引 •注意:命令窗口中显示的逻辑变量值是用1代表真,用0代表假。
2024年8月14日第69页缩短向量(1/1)•注意:实际中很少将缩短向量作为对问题的正确求解方法,而且这样做可能会导致逻辑混乱有可能的话,要使用索引来对需要保留的元素进行复制2024年8月14日第70页向量操作(1/1)•MATLAB语言的本质核心在于具有丰富的数组和向量操作工具•有3种方法直接从对标量的操作推广而来:(1)算术操作2)逻辑操作3)使用库函数•有两种方法是针对一般情况下的数组和特殊情况下的向量的:(1)连接2)切片(广义索引)2024年8月14日第71页第4章 MATLAB 的数学运算 MATLAB R2018b 基础教程基础教程 清华大学出版社清华大学出版社教学目标教学重点教学内容2024年8月14日第72页教学目标• 掌握多项式运算及插值• 掌握函数操作• 掌握微分方程2024年8月14日第73页教学重点•多项式运算及插值•函数操作•微分方程2024年8月14日第74页教学内容•多项式与插值•函数运算•微分方程2024年8月14日第75页多项式与插值(1/3)•多项式的表示 在MATLAB中多项式用一个行向量表示,向量中的元素为该多项式的系数,按照降序排列。
•多项式的四则运算 多项式的加减即为对应项系数的加减多项式的乘法实际上是多项式系数向量之间的卷积运算,可以通过MATLAB中的卷积函数conv来完成多项式的除法为乘法的逆运算,可以通过反卷积函数deconv来实现 2024年8月14日第76页多项式与插值(2/3)•多项式的其他运算函数功能roots多项式求根polyval多项式求值polyvalm矩阵多项式求值polyder多项式求导poly求矩阵的特征多项式;或者求一个多项式,其根为指定的数值polyfit多项式曲线拟合residue求解余项2024年8月14日第77页多项式与插值(3/3)•数据插值•插值运算中可选的方法参数对应方法‘nearest’最近邻插值‘linear’线性插值‘spline’三次样条插值‘pchip’或’cubic’三次插值2024年8月14日第78页函数运算(1/5) •函数的表示•利用M文件将函数定义为MATLAB函数•采用匿名函数的方式•数学函数图像的绘制• fplot函数的调用方式:(1)fplot(fun, xinterval),y = f (x)fun可以为MATLAB函数的M文件名;也可以是包含变量x的字符串,该字符串可以传递给函数eval;还可以是函数句柄。
2)参数 limits用于指定绘制图像的范围limits是一个向量,用于指定x轴的范围,格式为[xmin xmax]不设 limits值,默认x轴区间为[-5 5] 2024年8月14日第79页函数运算(2/5)•函数极值•一元函数的极小值•多元函数的极小值2024年8月14日第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] = fzero(...):返回零点的同时返回该点的函数值4)[x,fval,exitflag] = fzero(...):返回零点、该点的函数值及程序退出的标志5)[x,fval,exitflag,output] = fzero(...):返回零点、该点的函数值、程序退出的标志及选定的输出结果。
2024年8月14日第81页函数运算(4/5)•数值积分•一元函数的积分•一元函数的矢量积分•二重积分和三重积分2024年8月14日第82页函数运算(5/5)•含参数函数的使用 •用嵌套函数提供函数参数•用匿名函数提供函数参数2024年8月14日第83页微分方程(1/2)• 常微分方程初值问题•显式常微分方程•完全隐式常微分方程2024年8月14日第84页微分方程(2/2)•常微分方程边值问题•bvp4c函数用于求解常微分方程边值问题,该函数调用格式如下:•sol = bvp4c(odefun,bcfun,solinit)•sol = bvp4c(odefun,bcfun,solinit,options)2024年8月14日第85页第5章 字符串、单元数组和结构体 MATLAB R2018b 基础教程基础教程 清华大学出版社清华大学出版社教学目标教学重点教学内容2024年8月14日第86页教学目标•掌握字符串的生成及操作•掌握单元数组的生成及操作•掌握结构体的生成及操作2024年8月14日第87页教学重点•字符串•单元数组•结构体2024年8月14日第88页教学内容•字符串•单元数组和结构体2024年8月14日第89页字符串(1/4) 字符串的生成 •MATLAB 中的字符串为 ASCII 值的数值数组,作为字符串表达式进行表示。
在 MATLAB 中,生成字符串的方法为 stringname=’the content of the string’2024年8月14日第90页字符串(2/4)字符串的操作•字符串的显示直接显示和利用 disp 函数进行显示•字符串的执行在 MATLAB 中可以用函数 eval 来执行字符串•字符串运算字符串的运算主要包括判断字符串是否相等,通过字符串运算来比较字符串中的字符,进行字符分类、查找与替换、字符串与数值数组之间的相互转换等 2024年8月14日第91页字符串比较、查找和替换•字符串的比较 字符串的比较主要为比较两个字符串是否相同,字符串中的子串是否相同和字符串中的个别字符是否相同用于比较字符串的函数主要是strcmp和strncmp•字符串的查找和替换 查找与替换是字符串操作中的一项重要内容用于查找的函数主要有findstr,strmatch、strrep、strtok等 字符串(字符串(3/4))2024年8月14日第92页字符串(4/4)字符串与数值之间的转化 函数功能备注uintN(如,uint8)将字符串转化为相应的无符号整数uint8('ab')→ 97 98str2num将字符型转化为数字型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) →232024年8月14日第93页单元数组和结构体 (1/3)•MATLAB中的单元数组(cell array)和结构体(structure)数据类型均是将不同的相关数据集成到一个单一的变量中,使得大量的相关数据的处理与引用变得简单而方便2024年8月14日第94页单元数组和结构体 (2/3)单元数组 •单元数组的生成•单元数组的操作(1) 单元数组元素的访问(2) 单元数组的显示(3) 单元数组的图形显示(4) 单元数组元素的删除(5) 改变单元数组的维数(6) 改变数组的形状2024年8月14日第95页单元数组和结构体 (3/3)结构体 •结构体的生成•结构体的操作(1) 添加成员变量(2) 删除成员变量(3) 调用成员变量2024年8月14日第96页第6章 MATLAB 编程MATLAB R2018b 基础教程基础教程 清华大学出版社清华大学出版社教学目标教学重点教学内容2024年8月14日第97页教学目标•掌握 MATLAB的脚本文件及其编辑和调试方法• 掌握 MATLAB的程序设计和开发流程• 掌握 MATLAB 关系运算、逻辑运算及函数操作• 掌握 MATLAB中的流程控制语句• 了解 MATLAB的程序调试方法2024年8月14日第98页教学重点•MATLAB 的程序设计和开发流程•MATLAB 的关系运算、逻辑运算及函数操作•MATLAB 中的流程控制语句•MATLAB 程序调试方法2024年8月14日第99页教学内容•脚本文件和编辑器•程序设计和开发•关系运算符和逻辑变量•逻辑运算符和函数•条件语句•循环•switch结构•调试MATLAB程序2024年8月14日第100页脚本文件和编辑器(1/11) •在MATLAB中,用户可以使用两种方法执行运算: (1) 在交互模式下,直接在命令窗口中输入所有的命令。
(2) 通过运行脚本文件中所存储的MATLAB程序2024年8月14日第101页脚本文件和编辑器(2/11) 创建和使用脚本文件创建和使用脚本文件 2024年8月14日第102页脚本文件和编辑器(3/11)有效使用脚本文件 (1) 脚本文件名必须满足MATLAB为变量命名的约定2) 为脚本文件赋予的名称不要与其所计算的变量名称相同3) 为脚本文件赋予的名称要与MATLAB命令或者函数的名称都不相同 (4) 在交互模式中,脚本文件所创建的所有变量都是全局变量5) 函数文件所创建的变量是该函数的局部变量用户如果不必访问脚本文件中的所有变量,就需要考虑使用函数文件这将避免用变量名“弄乱”工作空间,并将同时减少内存需求 (6) 在不使用文本编辑器打开M-文件的情况下,用户可以使用type命令来查看文件的内容2024年8月14日第103页脚本文件和编辑器(4/11)有效使用命令窗口和编辑器/调试器窗口 •用户可以使用鼠标重新调整窗口的大小并移动窗口,从而可以同时查看它们•如果没有进入编辑器/调试器,那么使用Alt-Tab组合键则可快速地在编辑器/调试器窗口和命令窗口之间来回切换在命令窗口中,使用向上箭头键检索先前所输入的脚本文件名,并且按Enter键执行脚本文件。
在修改了脚本文件之后,要确保在切换到命令窗口之前保存文件•用户可以使用编辑器/调试器作为基本的文字处理器来编写包含有用户脚本文件、结果和讨论的简短报告,或者用以提供用户对某一问题的解答2024年8月14日第104页脚本文件和编辑器(5/11)调试脚本文件 •程序调试就是找出和删除程序中“故障”或者错误的过程 (1) 语法错误 (2) 运行时错误•MATLAB错误消息通常使用户能够找到语法错误•检查出运行时错误,可以尝试以下方法: (1) 总是使用简单问题(其可以通过手算来检验答案)来测试程序 (2) 删除语句末尾的分号,用以显示任何一个中间计算结果 (3) 使用编辑器/调试器的调试特性2024年8月14日第105页脚本文件和编辑器(6/11)编程风格 •注释部分 (1) 在第一行中放置程序名和任何关键词 (2)在第二行中放置创建的日期,以及创建者的姓名 (3) 每个输入和输出变量的变量名定义 (4) 程序中调用的每个用户自定义函数名称•输入部分:放置输入数据和/或输入函数,其允许输入数据•计算部分 :放置计算 •输出部分:放置那些以所需格式传递的输出函数。
2024年8月14日第106页脚本文件和编辑器(7/11)记录度量单位 •本书建议用户为所有的输入变量和输出变量记录度量单位,因为很多工程系统所出现的惊人失败都源于用户误解了用于设计系统的程序输入和输出变量的单位 2024年8月14日第107页脚本文件和编辑器(8/11)使用脚本文件存储数据 • 可能会有一些应用程序要求用户频繁地访问同一组数据如果是这样的话,用户可以将数组中的数据存储在一个脚本文件之中2024年8月14日第108页脚本文件和编辑器(9/11)控制输入和输出 • MATLAB为从用户获取输入以及为格式化输出(执行MATLAB命令而获得的结果)提供了许多有用的命令 命 令说 明disp(A)显示数组A的内容,而不是数组的名称disp(‘text’)显示单引号内部的文本串Format控制屏幕输出的显示格式Fprintf执行格式化的写入到屏幕或者写入到一个文件x = input('text')显示单引号中的文本,等待用户的键盘输入,并且将输入值存储在x中x = input('text','s')显示单引号中的文本,等待用户的键盘输入,并且将输入作为字符串存储在x中k=menu('title','option1','option2',...显示菜单,该菜单的名称在字符串变量'title'中,并且菜单的选项是'option1'、'option2'等等2024年8月14日第109页脚本文件和编辑器(10/11)用户输入 • input函数用以在屏幕上显示文本,等待用户从键盘输入某些内容,然后再将输入内容存储在指定变量之中。
2024年8月14日第110页脚本文件和编辑器(11/11)脚本文件示例 % 程序Falling_Speed.m:绘制一个下落物体的速度图形 W. Palm III于2004年3月1日创建 输入变量:% tf = 最终时间(单位为秒)%% 输出变量:% t = 计算速度的时间数组(单位为秒)% v = 速度数组(米/秒)% 参数值:g = 9.81; % 以SI为单位的重力加速度%% 输入部分:tf = input('Enter the final time in seconds: ');%% 计算部分:dt = tf/500;t = [0:dt:tf]; % 创建一个有501个时间值的数组v = g*t;%% 输出部分:plot(t,v),xlabel('Time (seconds)'),ylabel('Speed (meters/second) ')2024年8月14日第111页程序设计和开发 (1/5)•算法和控制结构 (1)顺序运算 (2)条件运算 (3)迭代运算(循环) •结构化程序设计(1)编写结构化程序较容易2)为一个应用编写的模块(函数)也可以用于其他的应用。
3)调试结构化程序较容易4)结构化程序设计在团队环境中非常有效5)理解和修改结构化程序较容易2024年8月14日第112页程序设计和开发 (2/5)•自顶向下的设计和程序文档 (1)简明地陈述问题 (2)指定程序所使用的数据这就是“输入” (3)指定程序所产生的信息这就是“输出” (4)通过手算或者计算器完成解决方案的步骤如果需要的话,可以使用一个较简单的数据集 (5) 编写和运行程序 (6)用手算结果检验程序的输出 (7)用输入数据运行程序,并且对输出进行一个真实性检验 (8)如果用户在将来使用该程序作为一个通用工具,那么,用户必须通过用一组合理的数据值来运行它以进行测试;并对结果进行一个真实性检验2024年8月14日第113页程序设计和开发 (3/5)•自顶向下的设计和程序文档结构图和流程图通过使用以下方法实现有效的文档记录 (1)合适地选择变量名,用以反映它们所代表的量 (2)在程序中使用注释 (3)使用结构图 (4)使用流程图 (5)通常在伪代码中逐字地描述程序2024年8月14日第114页程序设计和开发 (4/5)•伪代码 伪代码是对实际计算机代码的模仿。
伪代码可以为程序内部的注释提供根据除了提供文档记录之外,伪代码在编写详细代码之前对于一个程序轮廓所进行的描述也很有用 •查找故障 参看6.1.4节 2024年8月14日第115页程序设计和开发 (5/5)•开发大型程序(1)编写和测试各个模块(单元测试阶段)2)编写使用模块的顶级程序(构建阶段)3)测试第一个完整的程序(alpha测试版阶段)4) 由内部人员与熟悉和信任的外部用户(这通常必须签保密协议)测试最后的alpha测试版2024年8月14日第116页关系运算符和逻辑变量(1/4) •6个关系运算符: <小于,<=小于或者等于,>大于, >=大于或者等于,==等于,~=不等于•使用关系运算符进行比较的结果是0(如果比较是假)或者1(如果比较是真),并且MATLAB可以使用这个结果作为一个变量•用于比较数组时,关系运算符逐元素地比较数组比较的数组必须具有相同的维数唯一的例外是当用户比较一个数组和一个标量的时候,这时MATLAB将数组中的所有元素分别与标量进行比较 •关系运算符也可以用于数组寻址 •算术运算符+、-、*、/和\的优先级高于关系运算符。
关系运算符之间的优先级相等,并且MATLAB按照从左到右的顺序计算它们的值2024年8月14日第117页关系运算符和逻辑变量(2/4)logical类 •当使用关系运算符(如x = (5 > 2))时,创建了一个逻辑变量(在此处就是x)在MATLAB 之前的版本中,logical是任何一个数值数据类型的属性现在,logical是一个第一类数据类型和一个MATLAB类,所以logical现在等效于其他的第一类类型,如字符和单元数组逻辑变量只可能有值1(真)和0(假)2024年8月14日第118页关系运算符和逻辑变量(3/4)logical函数 •用户可以使用关系和逻辑运算符以及logical函数创建逻辑数组logical函数返回一个可以用于逻辑索引和逻辑测试的数组 2024年8月14日第119页关系运算符和逻辑变量(4/4)使用逻辑数组访问数组 •当使用逻辑数组寻址另一个数组时,MATLAB会从那个数组中提取逻辑数组有1那个位置中的元素 2024年8月14日第120页逻辑运算符和函数(1/2)•MATLAB中有5个逻辑运算符,有时也称为布尔(Boolean)运算符,这些运算符执行逐元素运算。
除了NOT运算符(~)之外,它们的优先级比算术和关系运算符的都低NOT运算 &和|运算符 •与(AND)运算•或(OR)运算异或函数 2024年8月14日第121页逻辑运算符和函数 (2/2)短路逻辑运算符 •A&&B •A||B逻辑运算符和find函数 •函数find(x)计算一个数组,它包含数组x中那些非零元素的索引它可与逻辑运算符结合使用 2024年8月14日第122页条件语句(1/3) • if语句 if语句的基本形式: if 逻辑表达式 语句 end“嵌套”if语句 if 逻辑表达式1 语句组1 if 逻辑表达式2 语句组2 end end 每条if语句必须伴随有一条end语句end语句标志着逻辑表达式为true时所要执行语句的结束if和逻辑表达式(其可以是一个标量、一个矢量或者一个矩阵)之间需要一个空格2024年8月14日第123页条件语句(2/3) •else语句与elseif语句 else语句的基本结构为: if 逻辑表达式 语句组1 else 语句组2 end使用elseif语句的一般形式是:if 逻辑表达式逻辑表达式1 语句组语句组1 elseif 逻辑表达式逻辑表达式2 语句组语句组2 else 语句组语句组3end2024年8月14日第124页条件语句(3/3) •字符串和条件语句 字符串是一个包含有字符的变量。
字符串对于创建输入提示符、消息、存储以及对诸如姓名和地址等数据进行的操作都很有用要在MATLAB创建一个字符串变量,可以将字符放在单引号中 字符串最重要的应用之一是:创建输入提示和输出消息 2024年8月14日第125页循环(1/4) • for循环 for循环的典型结构如下所示: for 循环变量 = m:s:n 语句 end注意 for语句需要伴随有一个end语句end语句标志着所要执行语句的结束在for和loop变量(其可能是一个标量、一个矢量或者一个矩阵,但是到目前为止,标量是最常见的情况)之间需要一个空格2024年8月14日第126页循环(2/4) • break和continue语句 break语句停止循环的执行 continue语句将把控制传递给那些它出现在其中的for或者while循环的下一次迭代之中,并同时跳过循环主体中的其他任何语句在嵌套循环中,continue将控制传递给关闭了continue语句的for或者while循环的下一次迭代2024年8月14日第127页循环(3/4) •使用数组作为循环索引 MATLAB中允许使用一个矩阵表达式为循环指定所执行的遍数。
在这种情况下,循环变量是一个矢量,并且在每一遍循环执行期间,MATLAB都将循环变量设置成等效于矩阵表达式的连续列 •隐含循环 •使用逻辑数组作为掩码 通常可以通过使用逻辑数组作为掩码(即,选择另一个数组的元素)来避免使用循环和分支,用户因此可以创建更简单和更快捷的程序2024年8月14日第128页循环(4/4) •while循环 while循环的典型结构如下所示: while 逻辑表达式 语句 end要使while循环正常运行,必须发生以下这两个前提条件: (1)在执行while语句之前,循环变量必须有一个值 (2)语句必须以某种方式改变循环变量的值 while循环的主要应用是:当用户希望只要某个语句为true时,循环就继续进行2024年8月14日第129页switch结构 (1/1) •switch结构的语法是: switch输入表达式(标量或者字符串) case 值1 语句组1 case 值2 语句组 2 . . . otherwise 语句组n end2024年8月14日第130页调试MATLAB程序(1/3) •编辑器的工具栏包含“文件”“导航”“编辑” “断点”和“运行”5个功能区,每个功能区里存放的就是同类功能或属性的功能按钮。
只需将鼠标指针停留在工具栏的某个按钮上,用户就可以了解它的功能编辑”功能区 •使用“编辑”功能区中的选项(功能按钮),用户就可以插入或删除注释、增加或减少缩排量、打开智能缩排,并在计算和命令窗口中显示所选变量的值2024年8月14日第131页调试MATLAB程序(2/3)•“断点”功能区 “断点”功能区中的选项主要用来设置/清除断点(Breakpoint)设置/清除”、“全部清除”命令;“断点”菜单的其他命令•“运行”功能区 •设置首选项 要为编辑器/调试器设置首选项,可以通过“主页”|“环境”|“预设”按钮 来进行 2024年8月14日第132页调试MATLAB程序(3/3)•查找故障 设置断点 检查变量 检查工作空间单步执行代码和继续执行•调试一个循环2024年8月14日第133页第7章 MATLAB的符号处理 MATLAB R2018b 基础教程基础教程 清华大学出版社清华大学出版社教学目标教学重点教学内容2024年8月14日第134页教学目标• 掌握基本符号运算• 掌握符号函数图形绘制• 掌握符号微积分的运算• 掌握符号方程的求解方法• 掌握符号积分变换• 了解 mfun 函数的使用• 了解符号函数计算器的使用2024年8月14日第135页教学重点•符号函数图形绘制•符号微积分的运算•符号方程的求解方法•符号积分变换2024年8月14日第136页教学内容•符号运算简介 •符号表达式的化简与替换 •符号函数图形绘制 •符号微积分 •符号方程的求解 •符号积分变换 •mfun函数的使用 •符号函数计算器 2024年8月14日第137页符号运算简介(1/6) •符号对象 符号对象是符号工具箱中定义的另一种数据类型。
符号对象是符号的字符串表示在符号工具箱中符号对象用于表示符号变量、表达式和方程下例说明了符号对象和普通的数据对象之间的差别2024年8月14日第138页符号运算简介(2/6)•符号变量、表达式的生成 sym/str2sym 函数 sym/str2sym 函数可以用于生成单个的符号变量syms函数 syms用于一次生成多个符号变量,但是不能用于生成表达式 2024年8月14日第139页符号运算简介(3/6)•symvar函数和subs函数 symvar函数 该函数用于确定一个表达式中的符号变量subs函数 subs函数可以将符号表达式中的符号变量用数值代替2024年8月14日第140页符号运算简介(4/6)•符号和数值之间的转化 sym/str2sym函数函数用于生成符号变量,也可以将数值转化为符号变量转化的方式由参数“flag”确定 2024年8月14日第141页符号运算简介(5/6)•任意精度的计算 •符号计算的一个非常显著的特点是:在计算过程中不会出现舍入误差,从而可以得到任意精度的数值解如果希望计算结果精确,可以用符号计算来获得足够高的计算精度符号计算相对于数值计算而言,需要更多的计算时间和存储空间。
•MATLAB 工具箱中有三种不同类型的算术运算:•数值型:MATLAB 的浮点数运算;•有理数类型:Maple 的精确符号运算;•VPA 类型:Maple 的任意精度算术运算2024年8月14日第142页符号运算简介(6/6)•创建符号方程 1.创建抽象方程2. 创建符号方程 创建符号方程的方法有两种:利用符号表达式创建和创建M文件 2024年8月14日第143页符号表达式的化简与替换(1/2) • 符号表达式的化简 MATLAB中collect、expand、horner、factor和simplify函数分别实现符号表达式的化简 1. Collect 2. expand 3. horner4. Factor 5. simplify2024年8月14日第144页符号表达式的化简与替换(2/2)•符号表达式的替换 1.subexpr2. subs2024年8月14日第145页符号函数图形绘制(1/3) •符号函数曲线的绘制 1. 显函数 2. 隐函数3. 参数方程 4. 三维参数曲线2024年8月14日第146页符号函数图形绘制(2/3)•符号函数曲面网格图及表面图的绘制 1. ezmesh、ezsurf2. ezmeshc、ezsurfc2024年8月14日第147页•等值线的绘制 在 MATLAB中,用于绘制符号函数等值线的函数有ezcontour和ezcontourf,这两个函数分别用于绘制等值线和带有区域填充的等值线。
符号函数图形绘制(3/3) 2024年8月14日第148页符号微积分 (1/5) •符号表达式求极限 在MATLAB中函数limit用于求表达式的极限 limit(F,x,a),当x趋近于a时表达式F的极限 limit(F,a),当F中的自变量趋近于a时F的极限,自变量由findsym函数确定 limit(F),当F中的自变量趋近于0时F的极限,自变量由findsym函数确定 limit(F,x,a,'right'),当x从右侧趋近于a时F的极限 limit(F,x,a,'left'),当x从左侧趋近于a时F的极限2024年8月14日第149页符号微积分 (2/5)•符号微分 MATLAB中函数diff实现函数求导和求微分,可以实现一元函数求导和多元函数求偏导 diff(S),实现表达式S的求导,自变量由函数findsym确定 diff(S,'v'),实现表达式对指定变量v的求导,该语句还可以写为diff(S,sym('v')) diff(S,n),求S的n阶导 diff(S,'v',n),求S对v的n阶导,该表达式还可以写为diff(S,n,'v')。
2024年8月14日第150页符号微积分 (3/5)•符号积分 与微分对应的是积分,在MATLAB中,函数int用于实现符号微分运算 R = int(S),求表达式S的不定积分,自变量由findsym函数确定 R = int(S,v),求表达式S对自变量v的不定积分 R = int(S,a,b),求表达式S在区间[a,b]上的定积分,自变量由findsym函数确定 R = int(S,v,a,b),求表达式S在区间[a,b]上的定积分,自变量为v2024年8月14日第151页•级数求和 symsum函数用于级数的求和 r = symsum(s),自变量为findsym函数所确定的符号变量,设其为k,则该表达式计算s从0到k–1的和 r = symsum(s,v),计算表达式s从0到v-1的和 r = symsum(s,a,b),计算自变量从a到b之间s的和 r = symsum(s,v,a,b),计算v从a到b之间的s的和 符号微积分 (4/5)2024年8月14日第152页符号微积分 (5/5)•Taylor级数 函数taylor用于实现Taylor级数的计算。
r = taylor(f),计算表达式f的Taylor级数,自变量由findsym函数确定,计算f的在0的15阶Taylor级数 r = taylor(f ,Name,Value),计算表达式f的Taylor级数,自变量由findsym函数确定,计算f在0的阶名Name-阶数Value的Taylor级数 r = taylor(f,v),指定自变量v的Taylor级数 r = taylor(f,v ,Name,Value),指定自变量v、阶名Name-阶数Value的Taylor级数 r = taylor(f,v,a ),指定自变量v、计算f在a的Taylor级数 r = taylor(f,v,a ,Name,Value),指定自变量v、阶名Name-阶数Value,计算f在a的Taylor级数2024年8月14日第153页符号方程的求解 (1/6)•代数方程的求解 代数方程包括线性方程、非线性方程和超越方程等在 MATLAB 中函数 solve 用于求解代数方程和方程组,其调用格式如下:•g = solve(eq),求解方程 eq 的解,对默认自变量求解,输入的参数 eq 可以是符号表达式或字符串;•g = solve(eq,var),求解方程 eq 的解,对指定自变量求解。
2024年8月14日第154页符号方程的求解 (2/6)•求解代数方程组 代数方程组同样由函数 solve 函数进行:•g = solve(eq1,eq2,...,eqn),求由方程 eq1、eq2、…、eqn 等组成的系统,自变量为默认自变量;•g = solve(eq1,eq2,...,eqn,var1,var2,...,varn),求由方程eq1、eq2、…、eqn 等组成的系统,自变量为指定的自变量:var1、var2、…、varn2024年8月14日第155页符号方程的求解 (3/6)•微分方程的求解 MATLAB 中微分方程的求解通过函数 dsolve 进行,该函数用于求解常微分方程 r = dsolve(‘eq1,eq2,...’, ‘cond1,cond2,...’, ‘v’) r = dsolve ('eq1','eq2',...,'cond1','cond2',...,'v')2024年8月14日第156页符号方程的求解 (4/6)•微分方程组的求解 求解微分方程组通过 dsolve 进行:•r = dsolve('eq1,eq2,...', 'cond1,cond2,...', 'v')。
该语句求解由参数 eq1、eq2 等指定的方程组成的系统,初值条件为 cond1、cond2 等,v 为自变量2024年8月14日第157页符号方程的求解 (5/6)•复合方程 复合方程通过函数 compose 进行:•compose(f,g),返回函数 f(g(y)),其中 f = f(x),g = g(y),x 是 f 的默认自变量,y 是 g 的默认自变量;•compose(f,g,z),返回函数 f(g(z)),自变量为 z;•compose(f,g,x,z),返回函数 f(g(z)),指定 f 的自变量为 x;•compose(f,g,x,y,z),返回函数 f(g(z)),f 和 g 的自变量分别指定为 x 和 y2024年8月14日第158页符号方程的求解 (6/6)•反方程•反方程通过函数 finverse 求得:•g = finverse(f),在函数 f 的反函数存在的情况下,返回函数 f 的反函数,自变量为默认自变量;•g = finverse(f,v),在函数 f 的反函数存在的情况下,返回函数 f 的反函数,自变量为 v2024年8月14日第159页符号积分变换 (1/3)•符号傅立叶变换 1. 傅立叶变换 F = fourier(f),实现函数f的傅立叶变换,如果f的默认自变量为x,则返回f的傅立叶变换结果,默认自变量为w;如果f的默认自变量为w,则返回结果的默认自变量为t。
F = fourier(f,v),返回结果为v的函数 F = fourier(f,u,v),f的自变量为u,返回结果为v的函数2. 傅立叶逆变换 f = ifourier(F),实现函数F的傅立叶逆变换,如果F的默认自变量为w,则返回结果f的默认自变量为x,如果F的自变量为x,则返回结果f的自变量为t f = ifourier(F,u),实现函数F的傅立叶逆变换,返回结果f为u的函数; f = ifourier(F,v,u),实现函数F的傅立叶逆变换,F的自变量为v,返回结果f为u的函数2024年8月14日第160页符号积分变换 (2/3)•符号拉普拉斯变换 1. 拉普拉斯变换 laplace(F),实现函数F的拉普拉斯变换,如果F的默认自变量为t,返回结果的默认自变量为s;如果F的默认自变量为s,则返回结果为t的函数 laplace(F,t),返回函数的自变量为t laplace(F,w,z),指定F的自变量为w,返回结果为z的函数2. 拉普拉斯逆变换 F = ilaplace(L),实现函数L的拉普拉斯逆变换,如果L的自变量为s,则返回结果为t的函数;如果L的自变量为t,则返回结果为x的函数。
F = ilaplace(L,y),返回结果为y的函数 F = ilaplace(L,y,x),指定L的自变量为y,返回结果为x的函数2024年8月14日第161页符号积分变换 (3/3)•符号Z变换 1. Z变换 F = ztrans(f),如果f的默认自变量为n,则返回结果为z的函数,如果f为函数z的函数,则返回结果为w的函数 F = ztrans(f,w),返回结果为w的函数 F = ztrans(f,k,w),f的自变量为k,返回结果为w的函数2. Z 逆变换 f = iztrans(F),若F的默认自变量为z,则返回结果为n的函数;如果F是n的函数,则返回结果为k的函数 f = iztrans(F,k),指定返回结果为k的函数 f = iztrans(F,w,k),指定F的自变量为w,返回结果为k的函数2024年8月14日第162页mfun 函数的使用 (1/1)•mfun 函数用于对 maple 函数进行数字评估该函数的调用格式为:•Y = mfun('function',par1,par2,par3,par4)。
•该语句对指定的数学函数进行评估•用户可以通过 help mfunlist 查看 MATLAB 中 mfun 可以调用的函数列表2024年8月14日第163页符号函数计算器 (1/2)•单变量符号函数计算器 在命令窗口中执行funtool即可调出单变量符号函数计算器单变量符号函数计算器用于对单变量函数进行操作,可以对符号函数进行化简、求导、绘制图形等 1. 输入框的功能 2. 控制按钮•Taylor逼近计算器 Taylor 逼近计算器用于实现函数的 taylor 逼近在命令窗口中输入 taylortool,调出Taylor 逼近计算器2024年8月14日第164页符号函数计算器 (2/2)级数的展开点,默认为 0 输入拟合函数的阶数 输入待逼近的函数 输入拟合区间 2024年8月14日第165页第8章 MATLAB 绘图 MATLAB R2018b 基础教程基础教程 清华大学出版社清华大学出版社教学目标教学重点教学内容2024年8月14日第166页教学目标•了解 MATLAB 的图形窗口•掌握 MATLAB 基本二维图形、三维图形的绘制,及图形的基本操作•掌握 MATLAB 特殊图形的绘制,如柱状图、饼状图•掌握图形注释的添加及管理•了解三维图形的视点控制及颜色、光照控制2024年8月14日第167页教学重点•MATLAB 基本二维图形、三维图形的绘制,及图形的基本操作•MATLAB 特殊图形的绘制,如柱状图、饼状图2024年8月14日第168页教学内容•MATLAB 图形窗口•基本图形的绘制 •特殊图形的绘制 •图形注释 •三维图形的高级控制 2024年8月14日第169页MATLAB 图形窗口(1/3) •图形窗口的创建与控制 1. 创建2. 图形窗口的控制 2024年8月14日第170页MATLAB 图形窗口(2/3)•图形窗口的菜单栏 “文件” 菜单“编辑”菜单“插入”菜单“工具”菜单 2024年8月14日第171页MATLAB 图形窗口(3/3)•图形窗口的工具栏 其中包含的工具同样存在于菜单栏中。
2024年8月14日第172页基本图形的绘制 (1/3) 在MATLAB中,绘制一个图形文件,一般的绘图流程有以下几个步骤 (1) 准备绘图所需数据 (2) 设置绘图区的位置 (3) 绘出图形 (4) 对图形进行属性设置及标注 (5) 保存和导出图形•二维图形的绘制 绘制二维图形的主要函数为plot,另外还有loglog,semilogx等函数1. plot(Y) 2. plot(x,y) 3. plot(x,y,LineSpec)2024年8月14日第173页基本图形的绘制 (2/3)•三维图形的绘制 三维图形包括三维曲线图和三维曲面图三维曲线图由plot3实现,三维曲面图由函数mesh和surf实现1. plot3 2. mesh函数和surf函数 2024年8月14日第174页基本图形的绘制 (3/3)•图形的其他操作 1. 图形保持 2. 图形子窗口 3. 坐标轴控制2024年8月14日第175页特殊图形的绘制(1/6) •条形图和面积图(Bar and Area Graphs) MATLAB中主要有4个函数用于绘制条形图。
1. bar和barh2. bar3,bar3h2024年8月14日第176页特殊图形的绘制(2/6) •饼状图(Pie Charts) 饼状图是一种统计图形,用于显示每个元素占总体的百分比,最常见的如磁盘容量统计图在MATLAB中,函数pie和pie3分别用于绘制二维和三维饼状图 2024年8月14日第177页特殊图形的绘制(3/6) •直方图 直方图可以直观地显示数据的分布情况 MATLAB中有两个函数可以绘制直方图:hist和rose,分别用于在直角坐标系和极坐标系中绘制直方图 2024年8月14日第178页特殊图形的绘制(4/6) •离散型数据图 MATLAB中提供了一些函数用于绘制离散数据 函 数功 能stem绘制二维离散图形stem3绘制三维离散图形stairs绘制二维阶跃图形2024年8月14日第179页特殊图形的绘制(5/6) •方向矢量图和速度矢量图 1. 罗盘图的绘制2. 羽状图的绘制3. 矢量图的绘制2024年8月14日第180页特殊图形的绘制(6/6) •等值线的绘制(Contour Plots) 等值线在实际中常有应用,如地形图、气压图等。
MATLAB中提供了一些函数用于绘制等值线函 数功 能clabel在二维等值线中添加高度值contour绘制指定数据的二维等值线contour3绘制指定数据的三维等值线contourf绘制二维等值线,并用颜色填充各等值线之间的区域contourc用于计算等值线矩阵,通常由其他函数调用meshc绘制二维等值线对应的网格图surfc绘制二维等值线对应的表面图2024年8月14日第181页图形注释(1/2) •添加基本注释 基本注释包括线头、箭头、文本框和用矩形或椭圆圈画出重要区域这些注释的添加可以通过图形注释工具栏直接完成 2024年8月14日第182页图形注释(2/2)•添加其他注释 1. 添加标题 (1) 通过Insert菜单添加(2) 通过属性编辑器添加标题(3) 通过命令语句添加2. 添加坐标轴标注 3. 添加图例(1) 通过界面添加(2) 通过legend函数添加图例4. 添加文本 (1) gtext函数 (2) text 函数2024年8月14日第183页三维图形的高级控制(1/3)•查看图形 1. 设置方位角和俯仰角2. 坐标轴(1) Stretch-to-Fill(2) 设置绘图区形状因子的其他命令(3) daspect、pbaspect(4) xlim、ylim、zlim3. 通过摄像机工具栏设置查看方式2024年8月14日第184页三维图形的高级控制(2/3)•图形的色彩控制 图形的颜色是图形的一个重要因素,丰富的颜色变化可以使图形更具有表现力。
MATLAB中图形的颜色控制主要由函数colormap完成 MATLAB是采用颜色映射表来处理图形颜色的,即RGB色系 2024年8月14日第185页三维图形的高级控制(3/3)•光照控制 光照通过模拟自然光照条件(如阳光)下的光亮和阴影向场景中添加真实性函 数说 明camlight创建或移动光源,位置为与摄像机之间的相对位置lightangle在球面坐标系中创建或放置光源light创建光照对象lighting选择照明方案material设置反射系数属性2024年8月14日第186页第9章 MATLAB句柄图形 MATLAB R2018b 基础教程基础教程 清华大学出版社清华大学出版社教学目标教学重点教学内容2024年8月14日第187页教学目标•了解 MATLAB 图形对象及属性•掌握 MATLAB 图形对象属性的设置及查询•掌握 MATLAB 图形对象句柄的访问及操作2024年8月14日第188页教学重点•MATLAB 图形对象及属性•MATLAB 图形对象句柄的访问及操作2024年8月14日第189页教学内容•MATLAB 的图形对象•图形对象的属性 •图形对象属性值的设置和查询 2024年8月14日第190页MATLAB 的图形对象(1/7) •图形对象是 MATLAB 显示数据的基本绘图元素,每个对象拥有一个唯一的标志,即句柄。
通过句柄可以对已有的图形对象进行操作,控制其属性•MATLAB 中这些对象的组织形式为层次结构,如图所示2024年8月14日第191页MATLAB 的图形对象(2/7)•Root 对象 即根对象根对象位于 MATLAB 层次结构的最上层,因此在 MATLAB 中创建图形对象时,只能创建唯一的一个 Root 对象,而其他的所有对象都从属于该对象根对象是由系统在启动 MATLAB 时自动创建的,用户可以对根对象的属性进行设置,从而改变图形的显示效果2024年8月14日第192页MATLAB 的图形对象(3/7)•Figure对象 Figure 是 MATLAB 显示图形的窗口,其中包含菜单栏、工具栏、用户接口对象、右键菜单、坐标系及坐标系的子对象等MATLAB 允许用户同时创建多个图形窗口 如果当前尚未创建图形对象(即 Figure 窗口),则调用任意一个绘图函数或图像显示函数(如 plot 函数和 imshow 函数等)均可以自动创建一个图形窗口如果当前根对象已经包含了一个或多个图形窗口,则总有一个窗口为“当前”窗口,且该窗口为所有当前绘图函数的输出窗口2024年8月14日第193页MATLAB 的图形对象(4/7)•Core 对象 包括基本的绘图单元,包括线条、文本、多边形及一些特殊对象,如表面图,表面图中包括矩形方格、图像和光照对象,光照对象不可视,但是会影响一些对象的色彩方案。
2024年8月14日第194页MATLAB 的图形对象(5/7)•Plot 对象 MATLAB 的一些高级绘图函数可以创建 Plot 对象通过 Plot 对象的属性可以快速访问其包含的核心(Core)对象的重要属性 Plot 对象的上级对象可以为坐标系(Axes)对象或者组(Group)对象2024年8月14日第195页MATLAB 的图形对象(6/7)•Annotation 对象 它是 MATLAB 中的注释内容,存在于因此的坐标系中,该坐标系的范围为整个图形窗口用户可以通过规范化坐标将注释对象放置于图形窗口中的任何位置规范化坐标的范围为从 0 到 1,窗口左下角为[0,0],右上角为 [1,1]2024年8月14日第196页MATLAB 的图形对象(7/7)•Group 对象 允许用户将多个坐标系子对象作为一个整体进行操作如,可以设置整个组为可视或者不可视,或者通过改变组对象的属性重新设置其中所有对象的位置等MATLAB 中有两种类型的组:•hggroup:如果需要创建一组对象,并且通过对该组中的任何一个对象进行操作而控制整个组的可视性或选中该组,则使用 hggroup。
hggroup 通过 hggroup 函数创建•hgtransform:当需要对一组对象进行变换时创建 hgtransform,其中变换包括选中、平移、尺寸变化等 hggroup 组和 hgtransform 组之间的差别在于 hgtransform 可以通过用变换矩阵对其中的所有子对象进行操作2024年8月14日第197页图形对象的属性(1/1)•图形对象的属性控制图形的外观和显示特点图形对象的属性包含公共属性和特有属性 属性描述BeingDeleted当对象的 DeleteFcn 函数调用后,该属性的值为 onBusyAction控制 MATLAB 图形对象句柄响应函数点中断方式ButtonDownFcn当单击按钮时执行响应函数Children该对象所有子对象的句柄Clipping打开或关闭剪切功能(只对坐标轴子对象有效)CreateFcn当对应类型的对象创建时执行DeleteFcn删除对象时执行该函数HandleVisibility用于控制句柄是否可以通过命令行或者响应函数访问HitTest设置当鼠标点击时是否可以使选中对象成为当前对象Interruptible确定当前的响应函数是否可以被后继的响应函数中断Parent该对象的上级(父)对象Selected表明该对象是否被选中SelectionHighlight指定是否显示对象的选中状态Tag用户指定的对象标签Type该对象的类型UserData用户想与该对象关联的任意数据Visible设置该对象是否可见2024年8月14日第198页图形对象属性值的设置和查询(1/3) •属性值的设置 MATLAB中,set函数可以用于设置对象的各项属性。
2024年8月14日第199页图形对象属性值的设置和查询(2/3) •对象的默认属性值 1. 默认属性值的搜索 2. 默认属性值的设置2024年8月14日第200页图形对象属性值的设置和查询(3/3) •属性值的查询 MATLAB中,利用get函数可以查询对象属性的当前值2024年8月14日第201页第10章 MATLAB GUI设计 MATLAB R2018b 基础教程基础教程 清华大学出版社清华大学出版社教学目标教学重点教学内容2024年8月14日第202页教学目标•了解 GUI 的基本控件•掌握通过 GUIDE 创建 GUI 的方法•掌握通过程序创建 GUI 的方法•了解通过AppDesigner创建GUI的方法2024年8月14日第203页教学重点•通过 GUIDE 创建 GUI•添加控件•编写响应函数•通过程序创建 GUI•创建界面•添加控件•通过AppDesigner创建GUI2024年8月14日第204页教学内容•GUI 简介 •通过向导创建 GUI 界面 •编写 GUI 代码 •通过程序创建 GUI •通过AppDesigner创建GUI2024年8月14日第205页GUI 简介(1/3)•GUI概述 MATLAB 中的 GUI 程序为事件驱动的程序。
事件包括按下按钮,鼠标单击等GUI 中的每个控件与用户定义的语句相关当在界面上执行某项操作时,则开始执行相关的语句 MATLAB 提供了两种创建图形用户接口的方法:通过 GUI 向导创建的方法和编程创建 GUI 的方法 MATLAB R2018b提供了另一种创建图形用户界面的方法:通过AppDesigner面向对象的方式创建GUI用户可以通过需要,选择适当的方法创建图形用户接口通常可以参考下面的建议•如果创建对话框,可以选择编程创建 GUI 的方法MATLAB 中提供了一系列标准对话框,可以通过一个函数简单创建对话框•只包含少量控件的 GUI,可以采用程序方法创建,每个控件可以由一个函数调用实现•复杂的 GUI 通过GUI向导或AppDesigner比通过程序创建更简单一些,但是对于大型的 GUI,或者由不同的 GUI 之间相互调用的大型程序,用程序创建更容易一些2024年8月14日第206页GUI 简介(2/3)•GUI的可选控件 Push Button Toggle ButtonRadio Button Check BoxEdit Text Static TextSlider List BoxPop-Up Menu AxesPanel Button GroupActiveX Component, 2024年8月14日第207页GUI 简介(3/3)•创建简单 GUI。
GUI 向导即 GUIDE,Graphical User Interface development environment,包含了大量创建 GUI 的工具,这些工具简化了创建 GUI 的过程通过向导创建 GUI 直观、简单,便于出击用户快速开始 GUI 创建1. 新建GUI 2. 向界面中添加控件3. 设置控件属性 4. 编写响应函数(1) surf按钮 (2) mesh按钮 (3) contour按钮2024年8月14日第208页通过向导创建GUI界面(1/3)•启动GUIDE•可以在命令行中键入GUIDE命令启动GUIDE2024年8月14日第209页通过向导创建GUI界面(2/3)•向GUI中添加控件1. 添加2. 设置控件标志3. 设置控件显示文本2024年8月14日第210页通过向导创建GUI界面(3/3)•创建菜单1. 创建菜单栏“快捷键” “在此菜单项上方放置分隔线”“在此菜单项前添加选中标记” “启用此项”“MenuSelectedFcn” “更多属性”2. 创建右键菜单2024年8月14日第211页编写GUI代码(1/4)•GUI文件•通常情况下,一个GUI包含两个文件,一个FIG文件和一个M文件。
•M文件通常包含一个与文件同名的主函数,各个控件对应的响应函数,这些响应函数为主函数的子函数2024年8月14日第212页编写GUI代码(2/4)•响应函数1. 响应函数的定义及类型2. 将响应函数与控件关联3. 响应函数的语法与参数4. 初始化响应函数2024年8月14日第213页编写GUI代码(3/4)•控件编程例10-1 按钮编程例10-2 切换按钮2024年8月14日第214页编写GUI代码(4/4)•通过GUIDE创建GUI实例1. 创建GUI界面2. 编写响应函数代码2024年8月14日第215页通过程序创建GUI (1/2) •用于创建GUI的函数1. 预定义对话框2. 创建对象3. ActiveX 控件4. 使用应用程序的数据5. 用户接口输入6. 优先权控制函数7. 应用函数2024年8月14日第216页通过程序创建GUI (2/2) 程序创建GUI示例1. 需要实现的功能及需要包含的控件2. 需要使用的技术3. 创建 GUI4. 创建GUI界面和控件(1) 创建主界面 (2) 创建坐标系 (3) 创建弹出菜单 (4) Update按钮(5) File菜单 (6) 工具栏5. 初始化GUI6. 定义响应函数(1) Update按钮的响应函数 (2) Open项的响应函数(3) Print菜单项的响应函数 (4) Close菜单项的响应函数7. 该GUI的完整M文件2024年8月14日第217页通过AppDesigner创建GUI (1/3) •Mathworks在R2016a中正式推出了GUIDE的替代产品:AppDesigner, 这是在MATLAB图形系统转向使用面向对象系统之后(R2014b),一个重要的后续产品。
它旨在顺应Web的潮流,帮助用户利用新的图形系统方便的设计更加美观的GUI2024年8月14日第218页通过AppDesigner创建GUI (2/3) •启动AppDesigner App Designer设计台可以通过以下两种方法启动:在命令行中输入appdesigner,或单击“主页”工具栏中的“新建”|“APP”,启动App Designer窗口2024年8月14日第219页通过AppDesigner创建GUI (3/3) •创建一个简单的GUI •该GUI是一个提款机界面,其中包含2个编辑字段(数值)框,分别用以显示账户存款余额和取款或者存款数目;2个按钮,分别用以确定取款和存款2024年8月14日第220页第11 章 Simulink的建模与仿真MATLAB R2018b 基础教程基础教程 清华大学出版社清华大学出版社教学目标教学重点教学内容2024年8月14日第221页教学目标•掌握Simulink的基本建模方法•熟悉Simulink模块库•熟悉常见Simulink模型•了解S函数的设计和调用2024年8月14日第222页教学重点•掌握Simulink的基本建模方法•熟悉Simulink模块库•熟悉常见Simulink模型2024年8月14日第223页教学内容Simulink简介 •Simulink模块库 •Simulink基本仿真建模 •常见Simulink模型 •S函数设计与应用 2024年8月14日第224页Simulink简介(1/2)•在MATLAB命令窗口中输入simulink,或在功能区中单击simulink按钮,就可启动Simulink。
Simulink开始页(Simulink Start Page)随即打开•Simulink开始页中,包含各种仿真模板的选择,点击Blank Model建立一个空白的模型,在其中可创建模型,单击窗口上方的 功能按钮,打开Simulink库浏览器(Simulink Library Browser)窗口,Simulink模块就在“库”中2024年8月14日第225页Simulink简介(2/2)•Simulink模型文件的扩展名为.mdl使用模型窗口中的File菜单打开、关闭和保存模型文件使用Edit菜单复制、剪切和粘贴模块用户还可以使用鼠标来完成这些操作2024年8月14日第226页Simulink模块库(1/16) •连续模块(Continuous) 2024年8月14日第227页Simulink模块库(2/16) •控制板模块(Dashboard) 2024年8月14日第228页Simulink模块库(3/16) •非连续模块(Discontinuous) 2024年8月14日第229页Simulink模块库(4/16) •离散模块(Discrete) 2024年8月14日第230页Simulink模块库(5/16) •逻辑和位操作模块(Logic and Bit Operations) 2024年8月14日第231页Simulink模块库(6/16) •查表模块(Lookup Table) 2024年8月14日第232页Simulink模块库(7/16) •数学操作模块(Math Operations) 2024年8月14日第233页Simulink模块库(8/16) •模型检测模块(Model Verification) 2024年8月14日第234页Simulink模块库(9/16) •模型扩充模块(Model-Wide Utilities) 2024年8月14日第235页Simulink模块库(10/16) •端口和子系统模块(Ports & Subsystems) 2024年8月14日第236页Simulink模块库(11/16) •信号属性模块(Signal Attributes) 2024年8月14日第237页Simulink模块库(12/16) •信号线路模块(Signal Routing) 2024年8月14日第238页Simulink模块库(13/16) •接收模块(Sinks) 2024年8月14日第239页Simulink模块库(14/16) •输入模块(Sources) 2024年8月14日第240页Simulink模块库(15/16) •字符串模块(String)2024年8月14日第241页Simulink模块库(16/16) •用户自定义函数模块(User-Defined Functions) 2024年8月14日第242页Simulink基本仿真建模(1/3)•仿真框图 通过构建一个显示了所要求解问题单元的框图,用户可以来开发Simulink模型。
这类框图被称为仿真框图或者模块框图 2024年8月14日第243页Simulink基本仿真建模(2/3)•基本建模方法 例11-1 dy/dt= 10 sin t的Simulink解 使用Simulink针对0≤t≤13时的情况求解以下的问题 精确解是y(t) = 10(1 - cos t)例11-2 输出到MATLAB工作空间之中例11-3 dy/dt = -10y + f (t)的Simulink模型2024年8月14日第244页Simulink基本仿真建模(3/3)•现有如下微分-代数混合方程:•初始条件为x1=–20, x2=3, x3=0.5,根据以上方程构造出Simulink模型,其中积分器Integrator、Integrator1、Integrator2的初始值设定分别是2、3、0.52024年8月14日第245页常见Simulink模型(1/5)•线性状态-变量模型 状态-变量模型(其不像传递-函数模型)可以有多个输入和多个输出当用户若要将输入连接到State-Space模块时,务必小心地以正确的顺序对它们进行连接当用户将模块的输出连接到另一个模块时也要务必小心。
例11-4 两个质量块系统的Simulink模型2024年8月14日第246页常见Simulink模型(2/5)•分段线性模型 不像线性模型,大部分的非线性微分方程都没有闭式解可以使用,因此,用户必须通过数值法求解这类方程如果一个微分方程中的因变量或者其导数出现在超越函数之中或者对它们进行求幂,那么就可以将这个方程认为非线性常微分方程 例11-5 由火箭推进的雪橇Simulink模型例11-6 一个由继电器控制的马达模型2024年8月14日第247页常见Simulink模型(3/5)•传递-函数模型 例11-7 死区响应2024年8月14日第248页常见Simulink模型(4/5)•非线性状态-变量模型 例11-8 一个非线性钟摆的模型2024年8月14日第249页常见Simulink模型(5/5)•子系统 子系统模块实际上就是一个由单个模块所表示的Simulink程序一旦创建了子系统模块,用户就可以在其他的Simulink程序中使用它 1. 液压系统 2. 连接子系统模块2024年8月14日第250页S函数的设计和应用(1/3)•S函数的介绍 S函数就是S-Functions,是system-Functions的缩写。
当MATLAB所提供的模型不能完全满足用户要求时,就可以通过S函数提供给用户自己编写程序来满足自己要求模型的接口S函数可以用MATLAB,C,C++,Ada和Fortran编写C,C++,Ada和Fortran 的S-Functions需要编译为Mex文件,就和其他MEX文件一样,Simulink可以随时动态地调用这些文件 2024年8月14日第251页S函数的设计和应用(2/3)• S函数的调用 在Simulink中使用S-Functions的方法就是从Simulink中的User-Defined Functions模块库中向Simulink模型文件窗口中拖放S-Function模块然后在S-Functions模块的对话框中的S-Functions Name框中输入S函数的文件名,在S-Functions Parameters框中输入S函数的参数值2024年8月14日第252页S函数的设计和应用(3/3)•S函数设计 对于代码部分的修改,可以使用MATLAB语言按照S-Functions的格式来编写代码MATLAB提供了一个模板文件,方便S-Function的编写,该模板文件位于MATLAB根目录toolbox/Simulink/blocks下。
2024年8月14日第253页第12 章 文件和数据的导入与导出 MATLAB R2018b 基础教程基础教程 清华大学出版社清华大学出版社教学目标教学重点教学内容2024年8月14日第254页教学目标•了解 MATLAB 的基本数据操作•掌握 MATLAB 中文本文件的读写方式•掌握 MATLAB 通过界面导入导出数据•了解 MATLAB 中的基本输入输出函数2024年8月14日第255页教学重点•MATLAB 中文本文件的读写方式•csvread、csvwrite •dlmread、dlmwrite •textread,textscan •低级文件I/O 2024年8月14日第256页教学内容•数据基本操作•文本文件的读写 •低级文件I/O •利用界面工具导入数据 2024年8月14日第257页数据基本操作(1/3) •文件的存储 1. 保存整个工作区2. 保存工作区中的变量3. 利用save命令保存2024年8月14日第258页数据基本操作(2/3) •数据导入 MATLAB中导入数据通常由函数load实现。
例12-1 将文件matlab.mat中的变量导入到工作区中 例12-2 从文件中导入数据2024年8月14日第259页数据基本操作(3/3) •文件的打开 MATLAB中可以使用open命令打开各种格式的文件,MATLAB自动根据文件的扩展名选择相应的编辑器例12-3 open与load的比较2024年8月14日第260页文本文件的读写(1/1) 1. csvread、csvwrite2. dlmread、dlmwrite3. textread,textscan函 数功 能csvread读入以逗号分隔的数据csvwrite将数据写入文件,数据间以逗号分隔dlmread将以 ASCII 码分隔的数值数据读入到矩阵中dlmwrite将矩阵数据写入到文件中,以 ASCII 分隔textread从文本文件中读入数据,将结果分别保存textscan从文本文件中读入数据,将结果保存为单元数组2024年8月14日第261页低级文件I/O (1/1) 1. 标记2. 宽度和精度指示3. 转换字符函 数功 能fclose关闭打开的文件feof判断是否为文件结尾ferror文件输入输出中的错误查找fgetl读入一行,忽略换行符fgets读入一行,直到换行符fopen打开文件,或者获取打开文件的信息fprintf格式化输入数据到文件fread从文件中读取二进制数据frewind将文件的位置指针移至文件开头位置fscanf格式化读入fseek设置文件位置指针ftell文件位置指针fwrite向文件中写入数据2024年8月14日第262页利用界面工具导入数据(1/1) •单击工作区浏览器工具栏中的“导入数据”按钮,在弹出的对话框中选择待导入的文件,这里选择一个文本文件,其内容为逗号分隔的数字。
•在该窗口中选择分隔符,设置导入数据的范围、起始行和导入方式、导入的变量等设置完成后,单击右上角的对号 ,完成数据的导入另外,还可进行导入预览的视图设置。