1、2022年8月7日第1页第1章 MATLAB R2010a简介 MATLAB R2010a 基础教程基础教程 教学目标教学目标教学重点教学重点教学内容教学内容2022年8月7日第2页教学目标 了解 MATLAB 语言的基本功能和特点 了解 MATLAB 的基本界面 了解 MATLAB 的路径搜索2022年8月7日第3页教学重点 了解 MATLAB 语言的基本功能 了解 MATLAB 语言的基本特点 熟悉 MATLAB 的基本界面 了解 MATLAB 的路径搜索2022年8月7日第4页教学内容 MATLAB 简 介 MATLAB R2010a 用户界面 MATLAB R2010a的路径搜索 20
2、22年8月7日第5页MATLAB 的特点(1/3)MATLAB 作为一种高级科学计算软件,是进行算法开发、数据可视化、数据分析以及数值计算的交互式应用开发环境。世界上许许多多的科研工作者都在使用 MATLAB 产品来加快他们的科研进程,缩短数据分析和算法开发的时间,研发出更加先进的产品和技术。相对于传统的 C、C+或者 FORTRAN 语言,MATLAB 提供了高效快速解决各种科学计算问题的方法。目前,MATLAB 产品已经被广泛认可为科学计算领域内的标准软件工具之一。2022年8月7日第6页MATLAB 的特点(2/3)MATLAB 可以被广泛的应用于不同的领域,例如信号与图像处理、控制系统
3、设计与仿真、通讯系统设计与仿真、测量测试与数据采集、金融数理分析以及生物科学等。在MATLAB中内嵌了丰富的数学、统计和工程计算函数,使用这些函数进行问题的分析解答,无论是问题的提出还是结果的表达都采用工程师习惯的数学描述方法,这一特点使 MATLAB 成为了数学分析、算法开发及应用程序开发的良好环境。MATLAB 的特点为:2022年8月7日第7页MATLAB 的特点(3/3)高级科学计算语言;代码、数据文件的集成管理环境;算法设计开发的交互式工具;用于线性代数、统计、傅立叶分析、滤波器设计、优化和数值计算的基本数学函数;2-D 和 3-D 数据可视化;创建自定义工程师图形界面的工具;与第三
4、方算法开发工具C/C+、FORTRAN、Java、COM、Microsoft Excel集成开发基于 MATLAB 的算法;2022年8月7日第8页MATLAB 的功能(1/9)MATLAB 将高性能的数值计算和可视化功能集成在一起,并提供了大量的内置函数,从而被广泛地应用于科学计算、控制系统和信息处理等领域的分析、仿真和设计工作,而且利用 MATLAB 产品的开放式结构,可以很容易地对 MATLAB 的功能进行扩充,从而在不断深化问题的认识的同时,不断完善 MATLAB 产品以提高产品自身的竞争能力。其功能为:2022年8月7日第9页MATLAB 的功能(2/9)数学计算 MATLAB 提供
5、的数学算法凝聚了世界上诸多科学家的辛勤劳动,保证了数学计算精确的结果。MATLAB 数学计算的内容有:线性代数和矩阵分析与变换 数据处理与基本统计 快速傅里叶变换(FFT),相关与协方差分析 稀疏矩阵运算 三角及其它初等函数 Bessel、beta及其它特殊函数 线性方程及微分方程求解 多维数组的支持 2022年8月7日第10页MATLAB 的功能(3/9)开发工具 MATLAB Editor 该工具提供了标准的编辑、调试 M 语言算法的基本环境,例如可以在该工具中定义断点并且进行单步调试。M-Lint Code Checker 该工具用于分析 M 语言代码并且向开发人员提出改善代码性能和维护
6、性的建议。MATLAB Profiler 该工具可以计算每行 M 语言代码执行消耗的时间;Directory Reports 该工具扫描当前目录下所有的 M 语言,并且报告文件的代码效率、文件的相关性以及代码覆盖度等信息 2022年8月7日第11页MATLAB 的功能(4/9)数据的可视化 MATLAB 提供了功能丰富的数据可视化功能函数,其中包括:二维、三维绘图,包括离散数据绘图、直线图、封闭折线图(polygon)、网格图、等值线图、极坐标图、直方图等丰富多样的数据可视化手段;交互的文本注释编辑能力;提供文件 I/O,用于显示绘制图形,支持多种图像文件格式例如:EPS,TIFF,JPEG,
7、PNG,BMP,HDF,AVI,PCX等;软硬件支持的 OpenGL 渲染;支持动画和声音;多种光源设置、照相机和透视控制;对图形界面元素提供了交互式可编程的控制方法句柄图形;能够打印或者导出数据图形文件到其它的应用程序中,例如 Word 和 PowerPoint,共享开发的结果。MATLAB 绘制的图形如:2022年8月7日第12页MATLAB 的功能(5/9)交互式编辑创建图形 MATLAB 提供了交互式工具用于设计、修改图形窗口,在 MATLAB 的图形窗口中工程师可以完成:拖放数据集到窗体;修改图形窗体中任意对象的属性;放大、旋转、平移、修改摄像机或者光线的位置、角度等;增加注释和数据
8、标注;将图形窗口文件转变为 M 代码。2022年8月7日第13页MATLAB 的功能(6/9)集成的算法开发编程语言和环境 MATLAB 提供了一种简便易用的算法开发语言 M 语言,直接利用 MATLAB 提供的基本数学、图形能力,开发工程师自定义的算法。几乎所有的 MATLAB 工具箱函数都是利用 M 语言开发的。可视化的程序编辑器/调试器;语法风格类似 C 语言,容易掌握;JIT 加速器加快程序运行速度;多维向量及工程师自定义结构,以及数组、结构、单元数组等多种数据结构;支持面向对象编程(OOP);流程控制(for,while,if,switch);字符变换;ASCII 及二进制文件输入输
9、出;灵活的开发性能够与 C,C+,FORTRAN,Java,COM 组件以及 Excel 集成使用;支持使用底层 I/O 手段获取数据,操作数据文件;MATLAB 数据文件MAT 文件支持跨平台应用。2022年8月7日第14页MATLAB 的功能(7/9)图形用户界面开发环境GUIDE 应用程序向导简化开发步骤;下拉及弹出式菜单;支持多种界面元素:按钮(PUSH BUTTON),单选按钮(RADIO BUTTON),复选框(CHECK BOXES),滑块(SLIDERS)、文本编辑框(EDIT BOX)和 ActiveX 控件;鼠标事件(Mouse Event)和响应函数(drawback);
10、利用响应函数响应工程师的操作。2022年8月7日第15页MATLAB 的功能(8/9)开放性、可扩展性强 M-语言函数文件是可见的 MATLAB 程序,所以工程师可以查看源代码。开放的系统设计使工程师能够检查算法的正确性,修改已存在的函数,或者加入自己的新函数,包括:使用 C 或者 FORTRAN MEX 文件集成已有的/FORTRAN 算法;在 C 或 FORTRAN 程序中调用 MATLAB 函数;在 MATLAB 中使用 Java 语言编程;提供 COM 服务和 COM 控制支持;输入输出各种 MATLAB 及其它标准格式的数据文件;对计算机串口进行输入输出操作;加载通用 DLL 文件;
11、创建图文并貌的技术文档,包括 MATLAB 图形、命令,并可通过 Word、HTML 输出;2022年8月7日第16页MATLAB 的功能(9/9)专业应用工具箱 MATLAB的工具箱加强了对工程及科学中特殊应用的支持。工具箱也和 MATLAB 一样是完全工程师化的,可扩展性强。将某个或某几个工具箱与 MATLAB 联合使用,可以得到一个功能强大的计算组合包,满足工程师的特殊要求。于是,MATLAB 产品被广泛应用于下列领域:测量测试数学建模与分析信号处理财经金融建模与分析图像处理与地理信息MATLAB 应用程序发布 2022年8月7日第17页MATLAB 的优点 易于学习、使用方便 支持多种
12、操作系统 丰富的内部函数 强大的图形和符号功能 可以自动选择算法 与其他软件和语言有良好的对接性2022年8月7日第18页MATLAB 的主界面当前路径窗口历史命令窗口命令窗口工具栏主菜单栏当前目录路径文件详细信息工作区窗口快速启动窗口按钮2022年8月7日第19页MATLAB 的工具栏新建打开剪切 复制 粘贴 撤销恢复Simulink:打开 Simulink,Simulink 是一个用来对动态系统进行建模、仿真和分析的软件包,它支持连续、离散及两者混合的线性和非线性系统,也支持具有多种采样频率的系统。Guide:快速启动 Guide,Guide 全称为 Graphical User Inte
13、rface development environment,用于辅助设计图形用户接口,使用该工具可以简化 GUI 编程。Profiler:快速启动 Profiler 工具,Profiler 工具能够分析出程序运行时间消耗情况,用于帮助分析、改进 M 文件 Help:打开 MATLAB 帮助;Current Directory:设置当前目录2022年8月7日第20页MATLAB 的窗口命令窗口MATLAB 命令窗口。打开 MATLAB 时,命令窗口自动显示于 MATLAB 界面中。运算提示符,表示 MATLAB 处于准备状态,用户可以输入命令,按下回车键执行,并在命令窗口中显示运行结果 2022
14、年8月7日第21页MATLAB 的窗口历史命令窗口 默认情况下历史命令窗口位于左下角,显示用户曾经输入过的命令,并显示输入的时间,方便用户查询。对于历史命令窗口中的命令,用户可以点击右键进行相应的操作。用户可以双击再次执行命令窗口中的命令。命令历史窗口2022年8月7日第22页MATLAB 的窗口工作区窗口 工作区窗口与当前路径窗口共享一块空间,可以通过标签显示或隐藏。工作区窗口中显示当前工作区中的所有变量及其大小和类型等。通过工作区可以对这些变量进行管理。其中包含了工作区工具栏和显示窗口。通过工具栏可以新建或删除变量、导入导出数据、绘制变量的图形等。另外右键单击变量名可以对该变量进行操作。工
15、作区窗口2022年8月7日第23页MATLAB 的窗口当前路径窗口 当前路径窗口显示当前路径下的所有文件和文件夹及其相关信息,并且可以通过当前路径工具栏或右键菜单对这些文件进行操作。当前路径窗口2022年8月7日第24页MATLAB 的路径搜索(1/3)路径设置 除 MATLAB 默认的搜索路径外,用户可以设置搜索路径。设置方法为:选择 MATLAB 窗口中的 File|Set Path 命令,进入路径搜索对话框。添加选中目录 添加选中目录及其子目录 2022年8月7日第25页MATLAB 的路径搜索(2/3)路径设置函数 path 命令 在命令窗口中输入 path 命令可以查看 MATLAB
16、 中的搜索路径:pathMATLABPATHD:Program FilesMATLABR2010atoolboxmatlabgeneralD:Program FilesMATLABR2010atoolboxmatlabopsD:Program FilesMATLABR2010atoolboxmatlablangD:Program FilesMATLABR2010atoolboxmatlabelmat path(newpath)命令改变搜索路径 2022年8月7日第26页MATLAB 的路径搜索(3/3)MATLAB 的搜索顺序 当在命令窗口中或者一个 M 文件中输入一个元素名称时,MATLAB
17、 按照下面的顺序搜索该元素的意义,以元素 foo 为例:1)查找工作区中是否存在名为 foo 的变量;2)在当前路径中查找是否存在名 foo.m 的文件;3)按照顺序查找搜索路径中是否存在该文件。如果存在多个名为 foo.m 的文件,则调用首先查到的文件。因此,在为变量和函数命名时,需考虑 MATLAB 的路径搜索顺序,合理为变量和函数命名,保证程序的正确运行。2022年8月7日第27页第2章 基本使用方法 MATLAB R2010a 基础教程基础教程 教学目标教学目标教学重点教学重点教学内容教学内容2022年8月7日第28页教学目标 掌握利用MATLAB R2010a的命令窗口进行简单的数学
18、运算 掌握常用的操作命令和快捷键 了解MATLAB R2010a的数据类型 了解MATLAB R2010a的操作符 了解MATLAB R2010a的基本数学函数 了解MATLAB R2010a脚本编程2022年8月7日第29页教学重点 掌握利用MATLAB R2010a的命令窗口进行简单的数学运算 掌握常用的操作命令和快捷键 了解MATLAB R2010a的数据类型 了解MATLAB R2010a的操作符2022年8月7日第30页教学内容 简单的数学运算 常用的操作命令和快捷键 MATLAB R2010a 的数据类型 MATLAB R2010a 的运算符 MATLAB的一些基础函数 MATLA
19、B脚本文件 2022年8月7日第31页简单的数学运算(1/6)最简单的计算器使用法 直接输入法 存储变量法2022年8月7日第32页简单的数学运算(2/6)表达式书写规则 在大多数情况下,MATLAB 对空格不予处理,因此在书写表达式时,可以利用空格调整表达式的格式,使表达式更易于阅读。在 MATLAB 表达式中,遵守四则运算法则,与通常法则相同。即运算从左到右进行,乘法和除法优先于加减法,指数运算优先于乘除法,括号的运算级别最高;在有多重括号存在的情况下,从括号的最里边向最外边逐渐扩展。需要注意的是,在 MATLAB 中只用小括号代表运算级别,中括号只用于生成向量和矩阵,花括号用于生成单元数
20、组。2022年8月7日第33页简单的数学运算(3/6)MATLAB中的常用数学函数 MATLAB提供的基本初等函数包括三角函数、指数函数和对数函数、复数函数、取整和求余函数、坐标变换函数、数理函数和一些特殊函数。2022年8月7日第34页简单的数学运算(4/6)MATLAB 的数学运算符 需要注意的是,右除和左除的意义并不相同。右除为常规的除法,而左除的意义为:ab=b/a。符号功能实例+加法3+5=8-减法3-5=-2*矩阵乘法3*5=15.*乘,点乘,即数组乘法/右除3/5=0.6000./数组右除左除35=1.6667.数组左除乘方35=243.数组乘方矩阵共轭转置.矩阵转置2022年8
21、月7日第35页简单的数学运算(5/6)标点符号的使用 在 MATLAB 中,标点符号有着充分的意义,可以用标点符号进行运算,或者标点符号可以包含特定的意义。标点符号定义标点符号定义分号(;)数组行分隔符;取消运行显示点(.)小数点;结构体成员访问逗号(,)数组列分隔符;函数参数分隔符省略号()续行符冒号(:)在数组中应用较多,如生成等差数列引号()定义字符串圆括号(())指定运算优先级;函数参数调用;数组索引等号(=)赋值语句方括号()定义矩阵感叹号(!)调用操作系统运算花括号()定义单元数组百分号(%)注释语句的标识2022年8月7日第36页简单的数学运算(6/6)分号(;)分号用于区分数组
22、的行,或者用于一个语句的结尾处,取消运行显示。百分号(%)该符号用于在程序文本中添加注释,增加程序的可读性。百分号之后的文本都将视作注释,系统不对其进行编译。2022年8月7日第37页常用的操作命令和快捷键(1/3)为方便用户操作,MATLAB 中定义了一些快捷键。掌握一些常用的操作命令和快捷键,可以使得对 MATLAB 的操作更加便利。2022年8月7日第38页常用的操作命令和快捷键(2/3)常用的操作命令命令功能命令功能cd显示或改变工作目录hold图形保持命令clc清空命令窗口load加载指定文件中的变量clear清除工作区中的变量pack整理内存碎片clf清除图形窗口path显示搜索目
23、录diary日志文件命令quit退出 MATLABdir显示当前目录下文件save保存内存变量disp显示变量或文字的内容type显示文件内容echo命令窗口信息显示开关2022年8月7日第39页常用的操作命令和快捷键(3/3)常用的操作快捷键快捷键功能快捷键功能(Ctrl+p)调用上一行Home(ctrl+a)移动到命令行开头(Ctrl+n)调用下一行End(ctrl+e)移动到命令行结尾(Ctrl+b)光标左移一个字符Ctrl+Home移动到命令窗口顶部(Ctrl+f)光标右移一个字符Ctrl+End移动到命令窗口底部Ctrl+光标左移一个单词Shift+Home选中光标和表达式开头之间的
24、内容Ctrl+光标右移一个单词Shift+End选中光标和表达式结尾之间的内容Esc取消当前输入行Ctrl+k剪切光标和表达式结尾之间的内容2022年8月7日第40页MATLAB R2010a 的数据类型 整数 浮点数 复数 逻辑变量 各种数据类型之间的转换 数据类型操作函数 变量 系统预定义的特殊变量 2022年8月7日第41页整数 MATLAB 支持8位、16位、32位和64位的有符号和无符号整数数据类型。上述整数数据类型除了定义范围不同外,具有相同的性质。数据类型描述uint88位无符号整数,范围为0255(即028-1)int88位有符号整数,范围为-128127(即-2727-1)u
25、int1616位无符号整数,范围为065535(即0216-1)int1616位有符号整数,范围为-3276832767(即-215215-1)uint3232位无符号整数,范围为04294967295(即0232-1)int3232位有符号整数,范围为-21474836482147483647(即-231231-1)uint6464位无符号整数,范围为018446744073709551615(即0264-1)int6464位有符号整数,范围为-92233720368547758089223372036854775807(即-263263-1)2022年8月7日第42页定义整数变量 定义变量
26、:由于 MATLAB 默认的数据类型为双精度型,因此在定义整形变量时,需指定变量的数据类型。2022年8月7日第43页整数运算(1/2)运算:类型相同的整数之间可以进行运算,返回相同类型的结果。在进行加、减和乘法运算时比较简单,在进行除法运算时稍微复杂一些,因为在多精度情况下,整数的除法不一定能得到整数的结果。在进行除法时,MATLAB 首先将两个数视为双精度类型进行运算,然后将结果转化为相应的整形数据。MATLAB 中不允许进行不同整数类型之间的运算。2022年8月7日第44页整数运算(2/2)由于每种整数数据类型都有相应的取值范围,因此数学运算有可能产生结果溢出。MATLAB 利用饱和处理
27、处理此类问题,即当运算结果超出了此类数据类型的上限或下限时,系统将结果设置为该上限或下限。例 2-10 整数运算中的数据溢出 x=int8(100);y=int8(90);z=x+yz=127 x-3*yans=-27 x-y-y-yans=-128结果溢出上限,因此结果为127 3*y溢出上限,结果为127,继续计算,得到最后结果-27 计算x-y-y-y时,从左到右进行计算,结果溢出下限,因此结果为-128 2022年8月7日第45页浮点数(1/2)MATLAB 的默认数据类型是双精度类型(double)。为了节省存储空间,MATLAB 也支持单精度数据类型的数组。单精度和双精度数据类型的
28、取值范围和精度可以通过例 2-12 的方式进行查看 2022年8月7日第46页浮点数(2/2)例 2-12 单精度和双精度数据类型的取值范围和精度 realmin(single)ans=1.1755e-038 realmax(single)ans=3.4028e+038 eps(single)ans=1.1921e-007 realmin(double)ans=2.2251e-308 realmax(double)ans=1.7977e+308 eps(double)ans=2.2204e-016创建单精度类型的变量时需要声明变量类型,与创建整型变量类似。单精度数据类型的数据进行运算时,返回值
29、为单精度。2022年8月7日第47页复数 复数由两个部分组成:实部和虚部。基本虚数单位等于,在 MATLAB 中虚数单位由 i 或者 j 表示。MATLAB 中可以通过两种方法创建复数,第一种方法为直接输入法,另一种创建复数的方法为通过 complex 函数。2022年8月7日第48页复数 complex 函数的调用方法如下。c=complex(a,b),返回结果 c 为复数,其实部为 a,虚部为 b。输入参数 a 和 b 可以为标量,或者维数、大小相同的向量、矩阵或者多维数组,输出参数和 a 和 b 的结构相同。a 和 b 可以有不同的数据类型,当 a 和 b 为各种不同的类型时,返回值分别
30、为:当 a 和 b 中有一个为单精度时,返回结果为单精度;如果 a 和 b 其中一个为整数类型,则另外一个必须有相同的整数类型,或者为双精度型,返回结果 c 为相同的整数类型。c=complex(a),只有一个输入参数,返回结果 c 为复数,其实部为 a,虚部为 0。但是此时 c 的数据类型为复数。2022年8月7日第49页逻辑变量(1/5)逻辑数据类型通过 1 和 0 分别表示逻辑真和逻辑假。一些 MATLAB 函数或操作符会返回逻辑真或逻辑假表示条件是否满足。如表达式(5*10)40 返回逻辑真。在 MATLAB 中,存在逻辑数组,如下面的表达式返回逻辑数组:30 40 50 60 70
31、40ans=0 0 1 1 12022年8月7日第50页逻辑变量(2/5)逻辑数组的创建 创建逻辑数组的最简单的方法为直接输入元素的值为 true 或者 false 逻辑数组也可以通过逻辑表达式生成2022年8月7日第51页逻辑变量(3/5)MATLAB 中返回逻辑值的函数和操作符 函数说明true,false将输入参数转化为逻辑值logical将数值转化为逻辑值&(and),|(or),(not),xor,any,all逻辑操作符&,|“并”和“或”的简写方式=(eq),=(ne),(gt),=(ge)关系操作符所有的 is*类型的函数,cellfun判断函数strcmp,strncmp,s
32、trcmpi,strncmpi字符串比较2022年8月7日第52页逻辑变量(4/5)逻辑数组的应用 用于条件表达式 如果仅当条件成立时执行某段代码,可以应用逻辑数组进行判断和控制 用于数组索引在 MATLAB 中支持通过一个数组对另一个数组进行索2022年8月7日第53页逻辑变量(5/5)逻辑数组的判断 MATLAB 中提供了一组函数用于判断数组是否为逻辑数组 函数功能whos(x)显示数组 x 的元素值及数据类型islogical(x)判断数组 x 是否为逻辑数组,是则返回真isa(x,logical)判断数组 x 是否为逻辑数组,是则返回真class(x)返回数组 x 的数据类型cellf
33、un(islogical,x)判断单元数组的每个单元是否为逻辑值2022年8月7日第54页各种数据类型之间的转换 在 MATLAB 中,各种数据类型之间可以互相转化,转化方式为:1)datatype(variable),其中 datatype 为目标数据类型,variable 为待转化的变量;2)cast(x,type),将x的类型转化为type指定的类型。转化时,如果由高精确度数据类型转化为低精确度数据类型,则对数据进行四舍五入;如果由定义范围大的数据类型转化为定义范围小的数据类型,则返回目标数据类型的上限或下限。2022年8月7日第55页数据类型操作函数 其中的 type 包括 numer
34、ic、integer、float 和所有的数据类型。函数描述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的类型为 ty
35、peintmax(type)type 类型的最大整数值intmin(type)type 类型的最小整数值realmax(type)type 类型的最大浮点实数值realmin(type)type 类型的最小浮点实数值eps(type)type 类型eps值eps(x)变量x的eps值2022年8月7日第56页变量 MATLAB 的变量命名规则与其他计算机语言类似,这一节介绍 MATLAB 的命名规则。首先,变量名必须是一个单一的词,不能包含空格,另外其命名必须符合下列规则:(1)变量名区分大小写。如 pi 和 Pi 是两个不同的变量。在命令窗口中输入如下的命令,查看其结果。(2)变量名长度不超
36、过63个字符,超过的部分将会被忽略。(3)变量名必须以字母开始,其后可以为字母、数字或者下划线。MATLAB 中的变量名不支持其他符号,因为其他符号在 MATLAB 中具有特殊的意义。2022年8月7日第57页MATLAB R2010a 的操作符(1/3)关系运算符 MATLAB 的关系运算符能用来比较两个相同大小的数组,或用来比较一个数组和一个标量。MATLAB 的关系运算符包括所有常用的比较运算符,如表所示 运算符说明运算符说明小于大于=大于或等于=等于=不等于2022年8月7日第58页MATLAB R2010a 的操作符(2/3)逻辑运算符 逻辑运算符主要包括“与”、“或”和“非”。使用
37、逻辑运算符可以将多个表达式组合在一起,或者对关系表达式取反。MATLAB 中的逻辑运算符如表所示。运算符描述&与&与,只适用于标量。a&b,当 a 的值为假时,则忽略 b 的值|或|或,只适用于标量。a|b,当 a 的值为真时,则忽略 b 的值非2022年8月7日第59页MATLAB R2010a 的操作符(3/3)运算符优先级 MATLAB 在执行含有关系运算和逻辑运算的数学运算时,同样遵循一套优先级原则。MATLAB 首先执行具有较高优先级的运算,然后执行具有较低优先级的运算;如果两个运算的优先级相同,则按从左到右的顺序执行。MALTAB 中各运算符的优先级顺序如表所示,表中按照优先级从高
38、到低的顺序排列各运算符。运算符圆括号()转置(.),共轭转置(),乘方(.),矩阵乘方()标量加法(+)、减法(-)、取反()乘法(.*),矩阵乘法(*),右除(./),左除(.),矩阵右除(/),矩阵左除()加法(+),减法(-),逻辑非()冒号运算符(:)小于(),小于等于(),大于等于(=),等于(=),不等于(=)数组逻辑与(&)数组逻辑或(|)逻辑与(&)逻辑或(|)2022年8月7日第60页MATLAB的一些基础函数 位操作函数 逻辑运算函数 集合函数 时间与日期函数 2022年8月7日第61页MATLAB脚本文件(1/3)对于一些简单的问题,当需要的命令数很少时,用户可以直接在
39、MATLAB 的命令窗口中输入命令。但是,对于多数问题,所需的命令较多,或者需要逻辑运算,进行流程控制,此时采用直接输入命令的方法则会引起不便。针对这些问题,一个合理的解决方法是使用脚本文件。脚本文件不接受输入参数,不返回任何值,而是代码的结合,该方法允许用户将一系列 MATLAB 命令输入到一个简单的脚本文件中,只要在 MATLAB 命令窗口中执行该文件,则会依次执行该文件中的命令。脚本文件的用法 在使用脚本文件时需要注意一点:当当前工作区中存在与该脚本同名的变量时,则当输入该文件名时,系统将其作为变量名执行。2022年8月7日第62页MATLAB脚本文件(2/3)块注释 在 MATLAB
40、7.0 以前的版本中,注释是逐行进行的,采用百分号(%)进行标记。逐行注释不利于用户增加和修改注释内容。在 MATLAB 7.0 及以后的版本中,用户可以使用“%”和“%”符号进行块注释,“%”和“%”分别代表注释块的起始和结束。2022年8月7日第63页MATLAB脚本文件(3/3)代码单元 在以往的版本中,MATLAB 通过编译器提供的操作命令和工具执行一段选中的代码。在 MATLAB 7.0 及以后的新版本中,用户可以使用代码单元完成这一操作。一个代码单元指用户在 M 文件中指定的一段代码,以一个代码单元符号(两个百分号加空格,即“%”为开始标志,到另一个代码单元符号结束,如果不存在代码
41、单元符号,则直到该文件结束。用户可以通过 MATLAB 编辑器中的 cell 菜单创建和管理代码单元。需要注意的是,代码单元只能在 MATLAB 编辑器窗口中创建和使用,而在 MATLAB 命令窗口中是无效的。当作命令窗口中运行 M 文件时,将执行文件中的全部语句。2022年8月7日第64页第5章 字符串、单元数组和结构体 MATLAB R2010a 基础教程基础教程 教学目标教学重点教学内容2022年8月7日第65页教学目标 掌握字符串的生成及操作 掌握单元数组的生成及操作 掌握结构体的生成及操作2022年8月7日第66页教学重点 字符串 单元数组 结构体2022年8月7日第67页教学内容
42、字符串 单元数组 结构体2022年8月7日第68页字符串的生成(1/2)字符串的生成 MATLAB 中的字符串为 ASCII 值的数值数组,作为字符串表达式进行表示。在 MATLAB 中,生成字符串的方法为 stringname=the content of the string。2022年8月7日第69页字符串的生成(2/2)字符串是一个 ASCII 码的字符数组,因此,与普通数组一样,字符串也可以形成矩阵(表现为一个字符串有多行)。但是,这些行必须有相同数目的列数。另外,使用 char 函数可以创建长度不一致的字符串矩阵。char 函数自动将所有字符串的长度设置为输入字符串中长度的最大值。
43、2022年8月7日第70页字符串的操作 字符串的显示字符串的显示有两种方式:直接显示和利用 disp 函数进行显示。字符串的执行在 MATLAB 中可以用函数 eval 来执行字符串。2022年8月7日第71页字符串的运算字符串的运算主要包括:1.判断字符串是否相等2.通过字符串运算来比较字符串中的字符3.进行字符分类、查找与替换4.字符串与数值数组之间的相互转换 函数名函数用途函数名函数用途strcat横向连接字符串strvcat纵向连接字符串strcmp字符串比较strncmp比较字符串的前n 个字符findstr字符串查找strjust字符串对齐strmatch字符串匹配strrep字符
44、串查找与替换strtok选择字符串中的部分blanks创建由空格组成的字符串deblank删除字符串结尾的空格ischar判断变量是否为字符串iscellstr判断字符串单元数组isletter判断数组是否由字母组成isspace判断是否空格stringsMATLAB 字符串句柄2022年8月7日第72页字符串的比较(1/3)字符串的比较主要为比较两个字符串是否相同,字符串中的子串是否相同和字符串中的个别字符是否相同。用于比较字符串的函数主要是 strcmp 和 strncmp。strcmp:用于比较两个字符串是否相同。用法为 strcmp(str1,str2),当两个字符串相同时返回1,否则
45、返回0。当所比较的两个字符串是单元字符数组时,返回值为一个列向量,元素为相应行比较的结果。strncmp:用于比较两个字符串的前面几个字符是否相同。用法为 strncmp(str1,str2,n),当字符串的前 n 个字符相同时返回1,否则返回 0。当所比较的两个字符串时单元数组时,返回值为列向量,元素为相应行比较的结果。2022年8月7日第73页字符串的比较(2/3)除了利用上面两个函数进行比较之外,还可以通过简单运算比较两个字符串。当两个字符串拥有相同的维数时,可以利用 MATLAB 运算法则,对字符数组进行比较。字符数组的比较与数值数组的比较基本相同,不同之处在于字符数组比较时进行比较的
46、是字符的 ASCII 码值。进行比较返回的结果为一个数值向量,元素为对应字符比较的结果。需要注意的是在利用这些运算比较字符串时,相互比较的两个字符串必须有相同数目的元素。符号符号意义英文简写=等于eq=不等于ne大于gt=大于等于ge2022年8月7日第74页字符串的比较(3/3)除上面介绍的两个字符串之间的比较之外,MATLAB 还可以判断字符串中的字符是否为空格字符或者字母。实现这两个功能的函数分别为 isspace 和isletter。下面分别介绍这两个函数。isspace:用法为 isspace(str),判断字符串 str 中的字符是否为空格,是空格字符则返回1,否则返回0。isle
47、tter:用法为 isletter(str),判断字符串 str 中的字符是否为字母,是字母则返回1,否则返回0。2022年8月7日第75页字符串的查找和替换 查找与替换是字符串操作中的一项重要内容。用于查找的函数主要有 findstr,strmatch,strrep,strtok 等。下面一一介绍这些函数。findstr:用于在一个字符串中查找子字符串,返回子字符串出现的起始位置。用法为findstr(str1,str2),执行时系统首先判断两个字符串的长短,然后在长的字符串中检索短的子字符串。strrep:查找字符串中的子字符串并将其替换为另一个子字符串。用法为 str=strrep(st
48、r1,str2,str3),将 str1 中的所有子字符串 str2 替换为 str3。2022年8月7日第76页 strmatch:在字符数组的每一行中查找是否存在待查找的字符串,存在则返回1,否则返回0。用法为strmatch(str,STRS),查找 str 中以 STRS 开头的字符串。另外可以用strmatch(str,STRS,exact),查找精确包含 STRS 的字符串。strtok:该函数用于选取字符串中的一个部分。该函数的简单用法为 strtok(str)。字符串的查找和替换字符串的查找和替换2022年8月7日第77页字符串与数值之间的转化 一个字符串是由单引号括起来的简单
49、文本。在字符串中的每个字符都是数组中的一个元素,这些数字是由 ASCII 字符表示的。这些字符和整数之间可以相互转化。首先,可以将字符串转化为数组。2022年8月7日第78页char 函数的用法 char 函数的用法 Str=char(arr),该命令将包含正数的数组 arr 转化为数值数组当 C 是一个字符型单元数组是,Str=char(arr)命令将 C 中的每一个单元转化为字符型数组的对应行。使用 cellstr 可以进行逆变换。Str=char(str1,str2,str3,.),该命令生成的字符串矩阵包含字符串 str1、str2 和 tr3,三个字符串的长度可以不相同。2022年8
50、月7日第79页字符串和数值数组之间的转化 上面已经介绍字符串和数值数组之间可以相互转化,除上面介绍的方法,MTALAB 还提供更多的函数,用于字符串和其他数据类型数值数组之间的转化,可以实现更多功能。函数功能备注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-