《MATLAB程序设计及应用完整版课件全套ppt教学教程电子讲义电子教案(最新).ppt》由会员分享,可在线阅读,更多相关《MATLAB程序设计及应用完整版课件全套ppt教学教程电子讲义电子教案(最新).ppt(256页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、MATLAB程序设计及应用(第2版),第1章 MATLAB入门与基本操作,1.1 MATLAB的发展沿革,MATLAB是美国New Mexico大学的数学和计算机教授Cleve Moler在20世纪70年代中后期讲授线性代数课程时首创的,全名为MATrix LABoratory(矩阵实验室)。 特点:用Fortran语言编写的,只能做矩阵运算; 绘图用星号描点的形式画图; 提供了几十个内部函数。,第1章 MATLAB入门与基本操作,1984年,Cleve Moler等一批数学家和软件专家成立了MathWorks软件开发公司,对MATLAB进行了大规模的扩展和改进,并与同年推出了第一个MATLA
2、B的商用版本。 特点:采用C语言进行改写; 具有较多的内部函数。,1.1 MATLAB的发展沿革,1993年推出了MATLAB4.0版,同年又推出了MATLAB4.2版。 特点:基于PC的以Windows为操作系统平台; 增加了Simulink,Control,Neural Network, Optimization,Signal Processing,Spline, Robust Control等工具箱; 4.2版首次开发了Symbolic Math工具箱。,1.1 MATLAB的发展沿革,1997年推出了MATLAB5.0版。 特点:基于Windows 95 ; 实现了真正的32位运算,数
3、值计算更快; 图形表现更丰富有效,编程更简洁直观; 用户界面十分友好。,1.1 MATLAB的发展沿革,2000年推出了MATLAB6.0版(Release 12)。 特点:在核心数值算法、界面设计、外部接口、应用桌 面等方面有了极大的改进。,1.1 MATLAB的发展沿革,2004年推出了MATLAB7.0版(Release 14)。 特点:集成了MATLAB7.0编译器、Simulink6.0图形仿真器及许多工具箱,在编程环境、代码效率、数据可视化、文件I/O等方面都进行了全面的升级。,1.1 MATLAB的发展沿革,从2006年开始 ,MathWorks公司在产品的发表模式发生了变化。每
4、年的3月和9月进行两次产品发布,版本的命名方式为“R+年份+代码”,对应于上下半年的代码分别是a和b 。 MATLAB R2013b(即MATLAB8.2版)是2013年9月推出的产品。 最近一次版本更新是2015年9月推出的MATLAB R2015b,对许多工具箱作了相应的升级,使得MATLAB的功能更强,应用更简便。,1.1 MATLAB的发展沿革,1.2 MATLAB的特点及应用领域,优点: (1)以复数数组(包括矩阵)作为基本编程单元,每个变量代表一个数组,其中的每个元素都可以是复数。数组的维数不需要预先定义即可采用,还可以随时改变数组的尺寸。 (2)易学易用,函数名和表达式更接近书写
5、计算公式的思维表达方式。使用MATLAB编程犹如在草稿纸上排列公式和求解问题。,第1章 MATLAB入门与基本操作,1.2 MATLAB的特点及应用领域,(3)是一种面向科学和工程计算的高级语言。它以数组运算为基础,极少的代码就可以实现复杂的功能。 (4)具有强大而智能化的图形功能。 (5)提供了许多面向应用问题求解的工具箱函数,从而大大方便科研人员的使用。 (6)开放性好,易于扩充。 (7) 与C语言和Fortran语言有良好的接口,可以实现混合编程。,1.2 MATLAB的特点及应用领域,缺点: (1)运行效率较低,执行相同功能的代码运行时间较长。 (2)用户编制的程序文件为文本文件,可以
6、用文本编辑器直接打开,不利于保密。 (3)访问硬件的能力相对较差,图形用户界面功能不够灵活。,1.2 MATLAB的特点及应用领域,应用领域: 数据分析; 数值与符号计算; 工程与科学绘图; 控制系统设计; 电路分析计算; 通信系统设计与仿真; 航天工业; 汽车工业; 生物医学工业; 语音处理; 图像与数字信号处理; 财务、金融分析; 建模、仿真与样机开发; 新算法研究开发。,1.3 MATLAB的安装启动 与操作桌面简介,1.3.1 MATLAB的安装和启动,第1章 MATLAB入门与基本操作,MATLAB 可以在Windows环境下直接安装。在MATLAB安装完成后,会在Windows桌面
7、上自动生成MATLAB的快捷方式图标 。,1.3.1 MATLAB的安装和启动,双击图标 ,就打开了如图1.1所示的MATLAB默认窗口(Desktop)。,图1.1,1.3 MATLAB的安装启动 与默认窗口简介,1.3.2 MATLAB默认窗口简介,图1.1所示的MATLAB默认窗口分为5个区域:指令窗、当前目录窗、历史指令窗、工作空间窗和Details窗。 另外,在MATLAB默认窗口的上方,还嵌入了菜单栏和工具栏,如图1.1所示。它们的使用及选择方式与Windows环境中的相同。,1.3.2 MATLAB默认窗口简介, 指令窗(Command Window) 该窗口是进行各种MATLA
8、B操作的最主要窗口。它位于MATLAB默认窗口的正中间。用户可以在该窗口中提示符“fx”后直接键入指令,按“Enter”键后,即可运行并显示除窗口外的所有运行结果。当指令窗口提示符为“fx”时,表示系统已经准备好,用户可以输入指令、函数、表达式,按“Enter”键后便可执行。, 当前目录窗(Current Directory Browser) 该窗口位于MATLAB默认窗口的左上方。它显示了当前目录下所有文件的文件名、文件类型、最后修改时间和文件相关描述等信息。,1.3.2 MATLAB默认窗口简介, 历史指令窗(Command History) 该窗口位于MATLAB默认窗口的右下方。它自动
9、记录自MATLAB安装起所有已经运行过的指令、函数、表达式,以及它们的运行日期和时间。该窗口中的所有指令、文字都允许复制、重新运行及用于产生M文件。, 工作空间窗(Workspace Browser) 该窗口位于MATLAB默认窗口的右上方。它列出了MATLAB工作空间中所有的变量名、大小、字节数和变量类型说明。在该窗口中,可以对变量进行观察、编辑、提取、保存和删除等操作。,1.3.2 MATLAB默认窗口简介, Details窗 该窗口位于MATLAB默认窗口的右下方,用于显示文件的细节。,在MATLAB默认窗口上方,还嵌入了菜单栏和工具栏, 它们的使用及选择方式与Windows环境中的相同
10、。,1.3 MATLAB的安装启动 与默认窗口简介,1.3.3 MATLAB R2013b界面菜单工具栏,MATLAB R2013b的界面相比较与其旧版本有了很大的差别,菜单和工具合为一体,即菜单工具。在MATLAB启动后,在默认窗口(见图1.1)的上方,用户可以看到如图1.2所示的菜单工具栏。顶层菜单有HOME(基本菜单和工具)、PLOTS(绘图工具)和APPS(应用程序)共3项。,图1.2,1.4 MATLAB指令窗操作入门,1.4.1 MATLAB指令窗简介,第1章 MATLAB入门与基本操作,1.4.1 MATLAB指令窗简介,图1.3,如果希望让几何独立的指令窗嵌入回MATLAB默认
11、窗口中,则只要单击下拉菜单中的图标 即可。,1.4 MATLAB指令窗操作入门,1.4.2 最简单的计算器使用方法,【例1.1】 求55+5(7.5-0.5)23的运算结果。,图1.3,1.4.2 最简单的计算器使用方法,【说明】 MATLAB指令是带有提示符“”的,从而可以区分是指令还是MATLAB给出的结果。 MATLAB的运算符(如、等)都是各种计算程序中常见的习惯符号。 在键入一条指令后,必须按下“Enter”键,该条指令才会被执行。 计算结果显示中的“ans”是英文“answer”的缩写,其含义是“运算答案”。这是MATLAB中的一个预定义的默认变量。,1.4.2 最简单的计算器使用
12、方法,【例1.2】 简单数组 的输入。,1.4.2 最简单的计算器使用方法,【说明】 直接输入数组时,数组元素之间用空格或逗号分隔,数组行之间用分号分隔,整个数组放在方括号对“”里。注意:标点符号必须在英文状态下输入! 在MATLAB中,不必事先对数组的维数进行任何说明,存储将自动配置。 指令执行后,数组A被保存在MATLAB的工作空间中。如果用户不对它进行重新赋值,或用clear指令清除它,该数组将会一直保存在工作空间中,直到本次MATLAB指令窗被关闭为止。 MATLAB对字母的大小写是敏感的。在本例中,数组赋给了变量A,而不是小写的a。,1.4.2 最简单的计算器使用方法, 按照MATL
13、AB的变量定义规则,将所有变量都定义为数组。标量被看作(11)的数组,向量认为是(1n)或(m1)的数组,矩阵认为是(mn)的数组。,1.4.2 最简单的计算器使用方法,【例1.3】数组的分行输入,【说明】 在这种输入法中,“Enter”键用来分隔数组中的行。,1.4.2 最简单的计算器使用方法,【例1.4】指令的续行输入,【说明】 MATLAB用3个或3个以上的连续黑点表示“续行”,即下一行是上一行的继续。,1.4 MATLAB指令窗操作入门,1.4.3 数值、变量和表达式,1. 数值的记述,MATLAB的数值采用习惯的十进制表示,可以带小数点或负号。以下记述都合法 4 100 0.0001
14、 6.789 8.7e6 1.8e56 在采用IEEE浮点算法的计算机上,数值通常采用“占用64位内存的双精度”表示。其相对精度是 eps (MATLAB的一个预定义变量),大约保持有效数字 16位。数值范围大致从10-308 到10308 。 除了一般实数数据之外,MATLAB还支持复数数组和字符串型数组。,1.4.3 数值、变量和表达式,2. 变量命名规则,MATLAB 中变量名应该由一个英文字母打头,后面可以跟字母、数字、下划线等,变量名最多不超过63个字符。 MATLAB中变量名是区分大小的。 有些变量名不能用 。例如,sin(它是MATLAB中定义的正弦函数名 )。但SIN和Sin可
15、以用。,1.4.3 数值、变量和表达式,3. 预定义变量,MATLAB中有一些所谓的“预定义变量”(Predefined Variable),如表1.1(p.8)所示。每当MATLAB启动时,这些变量就自动产生并取表中的预定义值。这些变量都有特殊的含义和用途。如果用户对表中任何一个预定义变量进行赋值,则那个变量的默认值将被用户新赋的值“临时”覆盖,原始的特殊取值将会丢失。 习惯于其他程序设计语言编程的读者最有可能将预定义变量 “i”和“j”作为循环变量使用,而破坏其默认值。 建议:在编写指令和程序时,尽量不对表1.1中所列预定义变量重新赋值,以免产生混淆。,1.4.3 数值、变量和表达式,4.
16、 运算符和表达式,MATLAB中的算术运算符和其他程序设计语言的表现形式相同。但由于MATLAB是面向矩阵/数组运算设计的,标量被看作(1 1)的矩阵/数组,“乘、除和幂”运算的规则与一般矩阵运算有所不同。除法运算包括了“左除”和“右除”两种运算。具体说明详见第2章。,1.4.3 数值、变量和表达式,MATALAB书写表达式的规则与“手写算式”几乎完全相同,也与其他程序设计语言没有多少差别。 表达式由变量名、运算符和函数名组成。 表达式按常规的优先级从左到右执行运算。 优先级的基本规定是:指数运算级别最高,乘除运算其 次,加减运算级别最低。 括号可以改变运算的次序。 书写表达式时,赋值符“=”
17、和运算符两侧允许有空格,以增加可读性。,1.4 MATLAB指令窗操作入门,1.4.4 工作空间与变量管理,对于如图1.1所示的默认窗口,直接点击工作空间窗中的变量名就可以进行相应的操作。,1.4.4 工作空间与变量管理,右击【例1.2】结果图中A的图标,可以根据下拉菜单进行相应操作。,1.4.4 工作空间与变量管理,还可以双击A的图标,在弹出的窗口中对A的内容进行修改,也可以改变A的尺寸。,对于如图1.3所示的几何独立的指令窗,则可以通过三个常用指令:who,whos和clear进行。 在指令窗中运行who指令和whos指令,可以获得有关工作空间中变量的相关信息;而运行clear指令则可以删
18、除一些不再使用的变量,使整个工作空间更简洁。,1.4.4 工作空间与变量管理,【例1.5】在指令窗中运行指令who,whos和clear的示例。,1.4.4 工作空间与变量管理,【说明】 可以把多条指令放在同一行上输入,中间用逗号或分号分隔。如果采用了分号,则不显示该条指令的运行结果。,1.4.4 工作空间与变量管理, whos指令将列出全部变量的变量名(Name)、大小(Size)、字节数(Bytes)、变量类型(Class)。除了列出了各个变量的相关信息外,还给出了整个工作空间的占用情况。 MATLAB将所有的变量都作为数组来看待。,1.4.4 工作空间与变量管理, clear指令中,X1
19、 和Y1之间不能加逗号或分号,只能用空格分隔;否则该指令就会被错误地解释成删除X1变量,然后运行下一条指令(其内容为Y1),而下一条指令将被解释成将Y1变量的内容显示出来,这样Y1变量就不会被删除。,1.4.4 工作空间与变量管理, 应当特别注意:单独键入clear指令,将无条件删除MATLAB工作空间中的全部变量!系统不会要求用户确认该指令,所有变量都被清除,并且不能恢复!,1.4 MATLAB指令窗操作入门,1.4.5 指令窗的显示方式与指令行的编辑 及标点符号,1. 默认的输入显示方式,从MATLAB7.0版本开始起规定:输入指令中的if, for, end等控制数据流的MATLAB关键
20、词自动地采用蓝色字体显示;输入指令中的非控制指令、数码,都自动地采用黑色字体显示;输入的字符串自动地采用紫色字体显示。,1.4.5 指令窗的显示方式与指令行的编辑 及标点符号,2. 运算结果的显示,在指令窗中显示的输出有:指令执行后,数值结果采用黑色字体输出;而运行过程中的出错信息用红色字体显示。,1.4.5 指令窗的显示方式与指令行的编辑 及标点符号,系统用红色的字体告知矩阵的维数不一致。,1.4.5 指令窗的显示方式与指令行的编辑 及标点符号,结果的输出一般默认采用“format short g”格式,显示出5位有效数字。不要误认为,运算结果的精度只有5位有效数字。MATLAB的数值数据通
21、常占用64位(Bit)内存,以16位有效数字的“双精度”进行运算和输出。 可以根据需要,在指令窗中直接输入相应的指令,获得所需的数值计算结果显示格式。表1.2 (p.10)给出了这些常用的数字显示格式。,【例1.6】 在指令窗中运行format指令的示例。,1.4.5 指令窗的显示方式与指令行的编辑 及标点符号,【说明】 在选择不同的数字显示格式时,MATLAB并不改变数字的大小,只改变显示格式。 一旦键入了上述某条format指令后,工作空间中的所有数据均采用同一格式显示。并且,在下一次键入format指令前,所有数据均按照本次format指令规定的格式显示。,1.4.5 指令窗的显示方式与
22、指令行的编辑 及标点符号,3. 指令窗中指令行的编辑 由于MATLAB把指令窗中输入的所有指令都记录在内存中专门的“历史指令”(Command History)空间中,因此MATLAB的指令窗不仅可以对输入执行过的指令进行编辑和运行,而且可以对已输入的指令进行回调、编辑和重新运行。常用的操作键如表1.3(p.11)所示。,1.4.5 指令窗的显示方式与指令行的编辑 及标点符号,4. 指令窗中的标点符号 MATLAB中的标点符号的作用如表1.4(p.12)所示。 需要特别提醒的是:在向指令窗中输入指令时,一定要在英文状态下输入。,1.4 MATLAB指令窗操作入门,1.4.6 在线帮助,为了帮助
23、用户在繁多的MATLAB指令中找到所需的指令并且了解指令的使用方式,MATLAB提供了广泛的在线帮助功能。最常用的功能是:help指令和lookfor指令。,1. help指令 在指令窗中运行help指令可以获得不同程度的帮助。 【例1.7】 在指令窗中运行help指令的示例。,1.4.6 在线帮助,(1)运行help引出主题(Topics)分类列表,1.4.6 在线帮助,(2)运行help topic引出具体主题下的函数名(FunName)列表,1.4.6 在线帮助,(3)运行help FunName获得具体函数的用法说明,1.4.6 在线帮助,(4)运行help help获得如何使用hel
24、p的信息,1.4.6 在线帮助,2. lookfor指令 lookfor指令根据关键词提供帮助。,【例1.8】 寻找所有求解riccati方程的指令和解释语句。,1.4.6 在线帮助,第2章 数值数组及其运算,MATLAB程序设计及应用(第2版),2.1 数值数组的创建、标识、 查询和定位,出于数值运算离散本质的考虑,也出于“向量化”快速处理数据的需要,MATLAB总把数值数组看作是存储和运算的基本单元,标量数据被看成是(11)的数组,而矩阵则是(mn)的数组。,第2章 数值数组及其运算,这是最简单,也是最通用的创建方法。【例1.1】【例1.4】就是采用这种方法创建的。复数矩阵(即二维复数数组
25、)的输入也很简单。,2.1 数值数组的创建、标识、 查询和定位,2.1.1 数组的创建,1. 逐个元素输入法,2.1.1 数组的创建,【例2.1】 产生复数数组,注意:虚数部分的几种输入表示方法,其中i和j的意义相同。,2.1.1 数组的创建,若将指令中“j*5”改成“j5”,系统会提示出错,因为j5 是一个未被定义或赋值的变量。,2.1.1 数组的创建,B数组创建后,可以用real,imag,abs,angle函数来求出其对应的实部数组、虚部数组、幅值数组和相角数组(参见p.26表2.2)。左图给出了求取对应的虚部数组的函数指令和结果。,2.1.1 数组的创建,2. 冒号“:”生成法,MAT
26、LAB定义了独特的冒号表达式来给一维“行”数组赋值,其通用格式为: x = a: inc: b 其中,a是生成数组的第一个元素;inc是采样点之间的间隔,即步距。如果(ba)是inc的整倍数,则生成数组的最后一个元素等于b;否则不等于b。如果inc的值为正值,则要求ab,否则结果为一个“空”数组。如果省略了inc,则步距值默认为1。,【例2.2】 以0为初值,0.2为步距,1.76为终值,产生一个“行”数组。,2.1.1 数组的创建,由于1.76不是0.2的整倍数,所以产生的最后一个元素为1.6,而不是1.76。,2.1.1 数组的创建,3. 定数线性采样法(linspace函数),该法在设定
27、“总点数”的前提下,均匀采样产生一维“行”数组。该法的通用格式为: x = linspace (a,b,n) 其中,a和b分别是生成数组的第一个和最后一个元素;n是采样总点数。该指令的作用与指令x = a: (b-a)/(n-1) : b相同。 与前一种方法相比,在于b一定能够被采到。,【例2.3】 在指令窗中运行linspace函数的示例。,2.1.1 数组的创建,2.1.1 数组的创建,4. 定数对数采样法(logspace函数),该法在设定“总点数”的前提下,经“常用对数”采样产生一维“行”数组。在系统频率分析中,常常用该指令产生频率响应的频率自变量采样点。该法的通用格式为: x = l
28、ogspace (a,b,n) 其中,n是采样总点数;生成数组的第一个元素值为10a;最后一个元素值为10b。,【例2.4】 在指令窗中运行logspace函数的示例。,2.1.1 数组的创建,2.1.1 数组的创建,5. 中等规模数组的数组编辑器创建法,当数组规模较大,元素数据比较冗长且杂乱无章时,借助于数组编辑器(Array Editor)比较方便。,【例2.5】 根据现有数据创建一个(38)的数组。,2.1.1 数组的创建,图2.1,图2.2,(1)单击图2.1所示的MATLAB默认窗口上面菜单工具栏中的图标 ,在工作空间窗中引出一个名为unnamed变量的数组编辑器,如图2.2所示。,
29、2.1.1 数组的创建,(2)在空白窗口中,按照“行、列”次序输入数据。最后一个数据-9输入结束后,按下【Enter】键,或在数组编辑器窗口内单击鼠标,使整个数组保存在unnamed变量中。,图2.3,2.1.1 数组的创建,(3)在数组编辑器窗口中,右键点中unnamed变量,利用弹出的菜单的Rename unnamed选项,把变量名改成所需的名称,比如ABC(此时,在工作空间窗口中会出现该变量)。,【说明】 运行上述指令后,在MATLAB的当前目录窗中可以找到一个名为ABC_DAT.mat的文件,其内容即为ABC变量。该指令中的第一个字符串为保存变量的文件名,第二个字符串为被保存的变量。如
30、果以后要调用该变量,则在指令窗中键入 load ABC_DAT。 save指令和load指令在处理较大规模的数组和需要多次重复运行或者需要经过多步中间运算才能得到最终结果的数组时,有着极为重要的作用。,2.1.1 数组的创建,(4)假如该变量要供以后调用,则在指令窗中键入 save ABC_DAT ABC,2.1.1 数组的创建,6. 中等规模数组的M脚本文件创建法,对于今后经常需要调用的数组,当数组规模较大而复杂时,为它专门建立一个M脚本文件是值得的。,【例2.6】创建和保存数组 AM的 MyMatrix.m 文件。,2.1.1 数组的创建,(1)单击MATLAB默认窗口上面的图标 ,打开M
31、文件 编辑调试器(Editor/Debugger) ,并在空白填写框中输入所需的数组。,图2.4,2.1.1 数组的创建,(2)在空白填写框中输入所需数组,并在文件的首行,编写文件名和简短说明,以便查阅 。,图2.4,2.1.1 数组的创建,图2.4,(3)点击M文件编辑调试器工具条上的Save图标 ,在弹出的Windows标准风格的对话框内,选择保存文件夹,键入新编程序的文件名(如MyMatrix),点击【保存(S)】键,就完成了文件的保存,并且文件起名为 MyMatrix.m 。,2.1.1 数组的创建,(4)以后只要在MATLAB指令窗中,键入 MyMatrix ,数组 AM 就会自动生
32、成于 MATLAB工作空间中。,实际应用中,往往需要产生一些特殊形式的数组。MATLAB考虑到这方面的需要,提供了许多生成特殊数组的函数。表2.1(p.19)列出了最常用的函数。,2.1.1 数组的创建,7. 利用MATLAB函数创建数组,【例2.7】 标准数组产生的示例。 运行结果分三张图显示。,2.1.1 数组的创建,2.1.1 数组的创建,2.1.1 数组的创建,2.1 数值数组的创建、标识、 查询和定位,2.1.2 数组的标识,在MATLAB中,数组元素是按列存储的。数组中的元素可以采用全下标方式和单下标方式进行标识。,全下标方式就是在引述具体数组元素时,用行下标和列下标表示数组元素的
33、位置。如果数组元素的下标行或列(i,j)大于数组的大小(m,n),MATLAB会提示出错。,2.1.2 数组的标识,【例2.8】 数组全下标标识和单下标标识的应用示例。,2.1.2 数组的标识,利用操作桌面中的工作空间浏览器,或者利用who指令和whos指令,可以对数组的大小进行查询。另外,还可以采用find指令进行特殊要求的数组元素定位;也可以利用length指令和size指令分别求取向量和矩阵维数。,2.1 数值数组的创建、标识、 查询和定位,2.1.3 数组的标识,【例2.9】 数组查询及定位的相关指令的应用示例。,2.1.3 数组的标识,【说明】 find指令执行的结果表明,在 A阵中
34、,第1行的第4,5列元素和第2行的第4列元素满足条件要求。 为什么会如此显示结果?矩阵的存储方式决定的。,2.1.3 数组的标识,【说明】 不管数组的维数是多少,size指令可以给出数组各维的大小。 length指令通常用来求取一维数组(即向量)的长度,它可以给出数组所有维中的最大长度。这就是说,length(A)等价于max (size (A)。,MATLAB中所有变量都被认为是数组变量,因此MATLAB的数值计算遵循数组运算的规则进行。如果在计算过程中发生数组维数不相容的情况,MATLAB将自动给出错误信息提示。此外,MATLAB还提供了独特的点“.”运算,因而使用起来更加方便。,2.2
35、数组的运算和操作,第2章 数值数组及其运算,2.2 数组的运算和操作,2.2.1 数组的代数运算,1. 数组与标量的运算,数组与标量的运算包括、和乘方等运算,其中、和的运算完成数组中的每个元素对标量的运算。,【例2.10】 数组与标量运算的示例。,2.2.1 数组的代数运算,2.2.1 数组的代数运算,MATLAB用符号“”表示乘方。求数组乘方时要求数组为方阵(参见数组的乘法运算)。,【例2.11】 矩阵乘方运算的示例。,【说明】 B2 完成BB运算。 B(-1) 实际上是求B的逆矩阵。 B(0.2) 实际上是求矩阵P , 使P5B。,2.2.1 数组的代数运算,如果要完成数组中每个元素的乘方
36、运算,则需要用到点运算(后面介绍)。,2. 数组的转置运算,数组A的转置用A表示。对于实数数组,即为转置运算;对于复数数组,则为共轭转置运算(即 Hermit转置运算)。另外,用A.表示A的非共轭转置运算。,2.2.1 数组的代数运算,【例2.12】 矩阵转置运算的示例。,2.2.1 数组的代数运算,实数数组的共轭和非共轭运算结果相同。,2.2.1 数组的代数运算,复数数组的共轭和非共轭运算结果不同。,数组A 和B的尺寸完全相同时(即皆为(mn)数组),可以进行加减法运算;如果A 和B的尺寸不相等, MATLAB将自动给出错误信息,提示两个数组的尺寸不相等。,【例2.13】 数组加减法运算的示
37、例。,2.2.1 数组的代数运算,3. 数组加减法运算,2.2.1 数组的代数运算,A和B的尺寸不相吻合,系统提示出错。,B和C的尺寸相吻合,完成对应位置的元素的算术运算。,4. 数组的乘法运算,2.2.1 数组的代数运算,两个二维数组A和B的维数相容时(A的列数等于B的行数),可以进行C =AB的运算。,【例2.14】 对【例2.13】中的A和B数组进行乘法运算。,2.2.1 数组的代数运算,2.2.1 数组的代数运算,5. 数组的除法运算,数组除法是MATLAB专门为二维数组(即矩阵)设计的一种运算。矩阵的除法运算包括左除“”和右除“/”两种运算。其中, 左除:AB=A-1B ,A为方阵(
38、即求方程Ax=B的解); 右除:A/B=AB-1, B为方阵(即求方程xA=B的解)。,【例2.15】 矩阵除法运算的示例。,如果改成A/B,会出现什么结果?,2.2.1 数组的代数运算,6. 数组的点运算,MATLAB中定义了一种特殊的运算,即所谓的点运算。两个数组之间的点运算是它们之间对应元素的直接运算。显然,这两个数组的尺寸应该完全相同(即皆为(mn)数组)。另外,数组与标量的运算也可以看成是标量常数对数组的点运算。,2.2.1 数组的代数运算,【例2.16】 数组的点运算示例。,要点:“.”后必须立即紧跟运算符才表示点运算。,2.2.1 数组的代数运算,【说明】 C=A*B是普通矩阵乘
39、积 运算。, CC=aij*bij ;AA=aij2。,7. 数组的求幂运算,2.2.1 数组的代数运算,数组求幂运算包括数组与常数和数组与数组的幂运算,用点运算的形式表示。,【例2.17】矩阵求幂运算的示例。,2.2.1 数组的代数运算,【说明】 A1=aij3;A2=3aij 。 A2=3.A 中,第一个“.”表示小数点(底数为3.0),第二个“.”和“”配合表示A数组求幂的点运算。, A3= aijbij。,2.2 数组的运算和操作,2.2.2 数组的块操作,MATLAB提供了很多简便、智能的方式,可以对数组进行元素更改、插入子块、提取子块、重排子块、扩充数组等操作。这里,最重要的是冒号
40、“:”的应用。在MATLAB中,冒号表示全部。,【例2.18】 数组块操作的示例。,2.2.2 数组的块操作,2.2.2 数组的块操作,在MATLAB中,不需要定义数组即可使用,而且将一个已存在数组的尺寸进行扩展甚为容易。 能否将一个已存在数组的尺寸缩小?后面介绍。,2.2 数组的运算和操作,2.2.3 数组的翻转操作,MATLAB提供了几种指令(函数),可以进行数组的翻转操作。,【例2.19】 数组翻转操作的示例。,2.2.3 数组的翻转操作,2.2.3 数组的翻转操作,2.2 数组的运算和操作,2.2.4 数组运算的常用数学函数,对于(mn)数组,数学函数 的运算规则为,2.2.4 数组运
41、算的常用数学函数,数组运算的常用数学函数如表2.2(p.26)所示。,注意:表2.2中的数组函数的运算都是点运算。三角函数及其相关函数的输入宗量的单位都是弧度。,【例2.20】 数组数学函数运算的示例。,2.2.4 数组运算的常用数学函数,【说明】 C=exp(A)完成的是C=exp(aij)运算; D=abs(B)完成的是D=abs(bij)运算,不要求B阵为方阵。,这是MATLAB中特有的三个概念和“预定义变量”。,2.3 “无穷大”、“非数”和“空”数组,第2章 数值数组及其运算,2.3 “无穷大”、“非数”和“空”数组,2.3.1 “无穷大”,“无穷大” 表示“infinite”,是由
42、一个非零数除以0得到的或者是在计算中出现的数值上溢产生的,在MATLAB中用Inf或inf记叙。MATLAB允许除数为0,并给出“Inf”作为本步计算结果,同时继续下面程序的运行。,【例2.21】 产生Inf的计算示例。,2.3.1 “无穷大”,2.3 “无穷大”、“非数”和“空”数组,2.3.2 “非数”,“非数”表示“Not-a-Number”,在MATLAB中用NaN或 nan记叙。按照IEEE的规定, 等运算都会产生NaN。,根据IEEE的数学规范,NaN具有以下性质: 对NaN的所有运算结果都为NaN,即NaN具有传递性; NaN没有“大小”的概念,因此不能比较两个NaN的大小。,2
43、.3.2 “非数”,NaN的功效: 真实记述 等运算的后果; 避免因 等运算而造成程序执行的中断; 在测量数据处理中,可以用来标识“野点(非正常点)”; 在数据可视化中,用来裁剪图形。,【例2.22】 NaN的产生和性质演示。,2.3.2 “非数”,2.3.2 “非数”,2.3.2 “非数”,【说明】 关于关系运算见5.3.1节。,2.3 “无穷大”、“非数”和“空”数组,2.3.3 “空” 数组,“空”数组用符号 表示,它不是元素取值为0的数组,而是一个行数或列数为0或者行列数均为0的数组。换句话说, 是一个标志,表示逻辑上的“无”或“不存在”。, 的功效: 在没有 参与运算时,计算结果中的
44、“ ”可以合理地解释 “所得结果的含义”; 运用 对其他非空数组赋值,可以使数组的尺寸变小,但不改变那数组的维数。,2.3.3 “空” 数组,【例2.23】 的产生、查询及应用。,【说明】 因为数组x 中的所有元素都小于7,y=find(x7)执行的结果是没有找到大于7的值,所以返回一个10的“空”数组。, 指令size() 执行的结果说明(00)的“空”数组是存在的。,2.3.3 “空” 数组, 用于子数组的删除和大数组的收缩。,指令clear A和A(:)= 的执行结果有何不同?,MATLAB程序设计及应用,第3章 字符串、元胞和结构数组,3.1 字符串数组,MATLAB可以给一串文字进行
45、定义并执行一些字符串的处理与运算。与数值计算相比,字符串运算在MATLAB中的重要性较小,并且提供的函数和操作也较少。但是,如果没有字符串以及相应的操作,数据的可视化操作将发生困难。,第3章 字符串、元胞和结构数组,字符串与数值是两种不同的数据类(Class),因此它们的创建方式也就不同。 数值数组通常是在MATLAB指令窗中采用数字赋值方式直接创建的。字符串数组(Character String Array)的创建方式是:在MATLAB指令窗中,先把待创建的字符串放在单引号对“”中,再按下【Enter】键。 注意:单引号对必须在英文状态下输入。单引号对是MATLAB识别输入内容“身份”(是变
46、量名、数字,还是字符串)所必须的。 字符串创建后,可以用who,whos,size等指令或函数对它进行属性判别、元素标识等操作。,3.1 字符串数组,3.1.1 字符串的创建、属性和标识,【例3.1】 数值量与字符串区别的示例。,3.1.1 字符串的创建、属性和标识,【说明】 class函数用于对变量的类别进行判别。,3.1.1 字符串的创建、属性和标识, a和b属于不同种类的数据,内存中所占字节不相同。,3.1.1 字符串的创建、属性和标识,【例3.2】 字符串的基本属性、元素的标识和简单操作的示例。,(1)创建字符串,3.1.1 字符串的创建、属性和标识,(2)字符串的大小 x是一个字符串
47、。该字符串内的每个字符(英文字母、空格和标点符号都被视为是平等的)均占据一个元素位。 字符串的大小用size指令获得。 x是一个字符串向量,3.1.1 字符串的创建、属性和标识,(3)字符串的元素标识 x是一个字符串向量。MATLAB按从左到右的次序用自然数数码(1,2,3等)标识其中字符的位置。 【说明】 x(1:6)是从字符串x中提出一个子字符串。 x(end:-1:1)是将字符串x倒排。,3.1.1 字符串的创建、属性和标识,(4)字符串的ASCII码 字符串的存储是用ASCII码实现的。指令abs和double都可以用来获取字符串所对应的ASCII码数值数组,而指令char则可以把AS
48、CII码数值数组转变为字符串。 【说明】 在指令char把数值转换成字符时,非整数部分将被截尾,而负数将导致出现“警告”信息。 中文字符可以转换。,3.1.1 字符串的创建、属性和标识,(5)对字符串ASCII码数组的操作 由于ASCII码数组是数值数组,所以有关数组的各种运算、函数以及操作对ASCII码数组都是适用的。 【说明】 指令xxx=find(x=a bbb; cccc指令中第二行的字符数与第一、三行不相等,系统提示出错。,3.1.2 字符串数组及字符串转换函数,【例3.4】字符串转换函数(见 p.35表3.1)的应用示例。,读者可以把指令x=there are , num2str(
49、a), kg apples. 中的“num2str(a)”换成“a”,看看会得到什么结果? 如果x中本来就有大写英文字符,则指令upper(x)会给出何种结果?,3.1.1 字符串数组及字符串转换函数,【例3.5】输出格式转换函数的应用示例。,函数fprintf() 在不改变当前format格式的情况下,按用户指定的格式显示所需的变量数据。,3.2 元胞数组,MATLAB允许将不同类型的数组组合成一种新的数组,称之为元胞数组(Cell Array)。元胞数组中的基本组成是元胞(Cell),用来存放各种不同类型的数据,如数组、字符串、元胞数组以及下一节要介绍的结构数组。每个元胞本身在数组中是平等的,它们只能用下标来区分。而且,同一元胞数组中各个元胞中的内容可以不同。 与数值数组一样,元胞数组可以是一维、二维或者更高维。元胞数组的标识方式也与数值数组相同,分为全下标方式和单下标方式。,第3章 字符串、元胞和结构数组,3.2 元胞数组,3.2.1 元胞数组的创建和显示,1. 元胞数组的创建,元胞数组的创