MATLAB程序设计及应用完整版课件全套ppt教学教程电子讲义电子教案(最新)

上传人:壹****1 文档编号:567607279 上传时间:2024-07-21 格式:PPT 页数:256 大小:9.30MB
返回 下载 相关 举报
MATLAB程序设计及应用完整版课件全套ppt教学教程电子讲义电子教案(最新)_第1页
第1页 / 共256页
MATLAB程序设计及应用完整版课件全套ppt教学教程电子讲义电子教案(最新)_第2页
第2页 / 共256页
MATLAB程序设计及应用完整版课件全套ppt教学教程电子讲义电子教案(最新)_第3页
第3页 / 共256页
MATLAB程序设计及应用完整版课件全套ppt教学教程电子讲义电子教案(最新)_第4页
第4页 / 共256页
MATLAB程序设计及应用完整版课件全套ppt教学教程电子讲义电子教案(最新)_第5页
第5页 / 共256页
点击查看更多>>
资源描述

《MATLAB程序设计及应用完整版课件全套ppt教学教程电子讲义电子教案(最新)》由会员分享,可在线阅读,更多相关《MATLAB程序设计及应用完整版课件全套ppt教学教程电子讲义电子教案(最新)(256页珍藏版)》请在金锄头文库上搜索。

1、MATLAB程序设计及应用(第2版)第第1章章 MATLAB入门与基本操作入门与基本操作1.1 MATLAB的发展沿革的发展沿革 MATLAB是美国是美国New Mexico大学的数学和计算机教授大学的数学和计算机教授Cleve Moler在在20世纪世纪70年代中后期讲授线性代数课程时年代中后期讲授线性代数课程时首创的,全名为首创的,全名为MATrix LABoratory(矩阵实验室)。(矩阵实验室)。 特点:特点:用用Fortran语言编写的,只能做矩阵运算;语言编写的,只能做矩阵运算; 绘图用星号描点的形式画图;绘图用星号描点的形式画图; 提供了几十个内部函数。提供了几十个内部函数。

2、第1章 MATLAB入门与基本操作入门与基本操作 1984年,年,Cleve Moler等一批数学家和软件专家成立了等一批数学家和软件专家成立了MathWorks软件开发公司,对软件开发公司,对MATLAB进行了大规模的进行了大规模的扩展和改进,并与同年推出了第一个扩展和改进,并与同年推出了第一个MATLAB的商用版的商用版本。本。 特点:特点:采用采用C语言进行改写;语言进行改写; 具有较多的内部函数。具有较多的内部函数。1.1 MATLAB的发展沿革的发展沿革 1993年年 推推 出出 了了 MATLAB4.0版版 , 同同 年年 又又 推推 出出 了了MATLAB4.2版。版。特点:特点

3、:基于基于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位运算,数值计算更快;位运算,数值计算更快;图形表现更丰富有效,编程更简洁直观;图形表现

4、更丰富有效,编程更简洁直观; 用户界面十分友好。用户界面十分友好。 1.1 MATLAB的发展沿革的发展沿革 2000年推出了年推出了MATLAB6.0版(版(Release 12)。)。特特点点:在在核核心心数数值值算算法法、界界面面设设计计、外外部部接接口口、应应用用桌桌 面等方面有了极大的改进。面等方面有了极大的改进。1.1 MATLAB的发展沿革的发展沿革 2004年推出了年推出了MATLAB7.0版(版(Release 14)。)。特点:特点:集成了集成了MATLAB7.0编译器、编译器、Simulink6.0图形仿真图形仿真器及许多工具箱,在编程环境、代码效率、数据可器及许多工具箱

5、,在编程环境、代码效率、数据可视化、文件视化、文件I/O等方面都进行了全面的升级。等方面都进行了全面的升级。1.1 MATLAB的发展沿革的发展沿革 从从2006年开始年开始 ,MathWorks公司在产品的发表模式发生公司在产品的发表模式发生了变化。每年的了变化。每年的3月和月和9月进行两次产品发布,版本的命名月进行两次产品发布,版本的命名方式为方式为“R+年份年份+代码代码”,对应于上下半年的代码分别是,对应于上下半年的代码分别是a和和b 。 MATLAB R2013b(即(即MATLAB8.2版)是版)是2013年年9月推月推出的产品。出的产品。 最近一次版本更新是最近一次版本更新是20

6、15年年9月推出的月推出的MATLAB R2015b,对许多工具箱作了相应的升级,使得,对许多工具箱作了相应的升级,使得MATLAB的功能的功能更强,应用更简便。更强,应用更简便。1.1 MATLAB的发展沿革的发展沿革1.2 MATLAB的特点及应用领域的特点及应用领域优点:优点:(1)以复数数组(包括矩阵)作为基本编程单元,每个)以复数数组(包括矩阵)作为基本编程单元,每个变量代表一个数组,其中的每个元素都可以是复数。数组变量代表一个数组,其中的每个元素都可以是复数。数组的维数不需要预先定义即可采用,还可以随时改变数组的的维数不需要预先定义即可采用,还可以随时改变数组的尺寸尺寸。 (2)易

7、学易用,函数名和表达式更接近书写计算公式的)易学易用,函数名和表达式更接近书写计算公式的思维表达方式。使用思维表达方式。使用MATLAB编程犹如在草稿纸上排列编程犹如在草稿纸上排列公式和求解问题。公式和求解问题。 第第1章章 MATLAB入门与基本操作入门与基本操作1.2 MATLAB的特点及应用领域的特点及应用领域(3)是一种面向科学和工程计算的高级语言。它以数组)是一种面向科学和工程计算的高级语言。它以数组运算为基础,极少的代码就可以实现复杂的功能。运算为基础,极少的代码就可以实现复杂的功能。 (4)具有强大而智能化的图形功能。)具有强大而智能化的图形功能。 (5)提供了许多面向应用问题求

8、解的工具箱函数,从而)提供了许多面向应用问题求解的工具箱函数,从而大大方便科研人员的使用。大大方便科研人员的使用。 (6)开放性好,易于扩充。)开放性好,易于扩充。 (7) 与与C语言和语言和Fortran语言有良好的接口,可以实现混语言有良好的接口,可以实现混合编程。合编程。 1.2 MATLAB的特点及应用领域的特点及应用领域缺点:缺点:(1)运行效率较低,执行相同功能的代码运行时间较长。)运行效率较低,执行相同功能的代码运行时间较长。 (2)用户编制的程序文件为文本文件,可以用文本编辑)用户编制的程序文件为文本文件,可以用文本编辑器直接打开,不利于保密。器直接打开,不利于保密。 (3)访

9、问硬件的能力相对较差,图形用户界面功能不够)访问硬件的能力相对较差,图形用户界面功能不够灵活。灵活。 1.2 MATLAB的特点及应用领域的特点及应用领域应用领域:应用领域: 数据分析;数据分析; 数值与符号计算;数值与符号计算; 工程与科学绘图;工程与科学绘图; 控制系统设计;控制系统设计; 电路分析计算;电路分析计算; 通信系统设计与仿真;通信系统设计与仿真; 航天工业;航天工业; 汽车工业;汽车工业; 生物医学工业;生物医学工业; 语音处理;语音处理; 图像与数字信号处理;图像与数字信号处理; 财务、金融分析;财务、金融分析; 建模、仿真与样机开发;建模、仿真与样机开发; 新算法研究开发

10、。新算法研究开发。1.3 MATLAB的安装启动的安装启动 与操作桌面简介与操作桌面简介 1.3.1 MATLAB的安装和启动的安装和启动第第1章章 MATLAB入门与基本操作入门与基本操作 MATLAB 可以在可以在Windows环境下直接安装。环境下直接安装。在在MATLAB安装完成后,会在安装完成后,会在Windows桌面上自动生成桌面上自动生成MATLAB的快捷方式图标的快捷方式图标 。 1.3.1 MATLAB的安装和启动的安装和启动双击图标双击图标 ,就打开了如图,就打开了如图1.1所示的所示的MATLAB默认窗口默认窗口(Desktop)。)。图图1.11.3 MATLAB的安装

11、启动的安装启动 与默认窗口简介与默认窗口简介 1.3.2 MATLAB默认窗口简介默认窗口简介 图图1.1所示的所示的MATLAB默认窗口分为默认窗口分为5个区域:指令窗、个区域:指令窗、当前目录窗、历史指令窗、工作空间当前目录窗、历史指令窗、工作空间窗窗和和Details窗。窗。 另外,在另外,在MATLAB默认窗口的上方,还嵌入了菜单栏和默认窗口的上方,还嵌入了菜单栏和工具栏,如图工具栏,如图1.1所示。它们的使用及选择方式与所示。它们的使用及选择方式与Windows环境中的相同。环境中的相同。 1.3.2 MATLAB默认窗口简介默认窗口简介 指令窗(指令窗(Command Window

12、) 该窗口是进行各种该窗口是进行各种MATLAB操作的最主要窗口。它位于操作的最主要窗口。它位于MATLAB默认窗口的正中间。默认窗口的正中间。用户可以在该窗口中提示符用户可以在该窗口中提示符“fx”后直接键入指令,按后直接键入指令,按“Enter”键后,即可运行并键后,即可运行并显示除窗口外的所有运行结果。当指令窗口提示符为显示除窗口外的所有运行结果。当指令窗口提示符为“fx”时,表示系统已经准备好,用户可以输入指令、时,表示系统已经准备好,用户可以输入指令、函数、表达式,按函数、表达式,按“Enter”键后便可执行。键后便可执行。 当前目录窗(当前目录窗(Current Directory

13、 Browser) 该窗口位于该窗口位于MATLAB默认窗口的左上方。它默认窗口的左上方。它显示了当前目显示了当前目录下所有文件的文件名、文件类型、最后修改时间和文件录下所有文件的文件名、文件类型、最后修改时间和文件相关描述等信息。相关描述等信息。 1.3.2 MATLAB默认窗口默认窗口简介简介 历史指令窗(历史指令窗(Command History) 该窗口位于该窗口位于MATLAB默认窗口的右下方。它自动记录自默认窗口的右下方。它自动记录自MATLAB安装起所有已经运行过的指令、函数、表达式,安装起所有已经运行过的指令、函数、表达式,以及它们的运行日期和时间。该窗口中的所有指令、文字以及

14、它们的运行日期和时间。该窗口中的所有指令、文字都允许复制、重新运行及用于产生都允许复制、重新运行及用于产生M文件。文件。 工作空间窗(工作空间窗(Workspace Browser) 该窗口位于该窗口位于MATLAB默认窗口的右上方默认窗口的右上方。它列出了。它列出了MATLAB工作空间中所有的变量名、大小、字节数和变量工作空间中所有的变量名、大小、字节数和变量类型说明。在该窗口中,可以对变量进行观察、编辑、提类型说明。在该窗口中,可以对变量进行观察、编辑、提取、保存和删除等操作。取、保存和删除等操作。1.3.2 MATLAB默认窗口默认窗口简介简介 Details窗窗 该窗口位于该窗口位于M

15、ATLAB默认窗口的右下方,用于显示文件默认窗口的右下方,用于显示文件的细节。的细节。 在在MATLAB默认窗口默认窗口上方,还嵌入了菜单栏和工具栏,上方,还嵌入了菜单栏和工具栏,它们的使用及选择方式与它们的使用及选择方式与Windows环境中的相同。环境中的相同。 1.3 MATLAB的安装启动的安装启动 与默认窗口简介与默认窗口简介 1.3.3 MATLAB R2013b界面菜单工具栏界面菜单工具栏 MATLAB R2013b的界面相比较与其旧版本有了很大的差的界面相比较与其旧版本有了很大的差别,菜单和工具合为一体,即菜单工具。在别,菜单和工具合为一体,即菜单工具。在MATLAB启动启动后

16、,在默认窗口(见图后,在默认窗口(见图1.1)的上方,用户可以看到如图)的上方,用户可以看到如图1.2所示的菜单工具栏。顶层菜单有所示的菜单工具栏。顶层菜单有HOME(基本菜单和工具)(基本菜单和工具)、PLOTS(绘图工具)和(绘图工具)和APPS(应用程序)共(应用程序)共3项。项。 图图1.21.4 MATLAB指令窗操作入门指令窗操作入门 1.4.1 MATLAB指令窗简介指令窗简介 第第1章 MATLAB入门与基本操作入门与基本操作 MATLAB指指令令窗窗位位于于MATLAB默默认认窗窗口口的的正正中中间间,如如图图1.1所示。如果用户希望得到脱离默认窗口的几何独立的指所示。如果用

17、户希望得到脱离默认窗口的几何独立的指令窗,只要单击图令窗,只要单击图1.2中的图标中的图标 ,并在下拉菜单中选择,并在下拉菜单中选择 就可以获得如图就可以获得如图1.3所示的指令窗。所示的指令窗。1.4.1 MATLAB指令窗简介指令窗简介 图图1.3 如果希望让几何独立的指令窗嵌入回如果希望让几何独立的指令窗嵌入回MATLAB默认窗默认窗口中,则只要单击下拉菜单中的图标口中,则只要单击下拉菜单中的图标 即可。即可。 1.4 MATLAB指令窗操作入门指令窗操作入门 1.4.2 最简单的计算器使用方法最简单的计算器使用方法 【例【例1.1】 求求55+5(7.5-0.5)23的运算结果。的运算

18、结果。图图1.31.4.2 最简单的计算器使用方法最简单的计算器使用方法 【说明】【说明】 MATLAB指令是带有提示符指令是带有提示符“”的,从而可以区分的,从而可以区分是指令还是是指令还是MATLAB给出的结果。给出的结果。 MATLAB的运算符(如、等)都是各种计算程序的运算符(如、等)都是各种计算程序中常见的习惯符号。中常见的习惯符号。 在键入一条指令后,必须按下在键入一条指令后,必须按下“Enter”键,该条指令键,该条指令才会被执行。才会被执行。 计算结果显示中的计算结果显示中的“ans”是英文是英文“answer”的缩写,的缩写,其含义是其含义是“运算答案运算答案”。这是。这是M

19、ATLAB中的一个预定义的中的一个预定义的默认变量。默认变量。1.4.2 最简单的计算器使用方法最简单的计算器使用方法 【例【例1.2】 简单数组简单数组 的输入。的输入。1.4.2 最简单的计算器使用方法最简单的计算器使用方法 【说明】【说明】 直接输入数组时,数组元素之间用空格或逗号分隔,数直接输入数组时,数组元素之间用空格或逗号分隔,数组行之间用分号分隔,整个数组放在方括号对组行之间用分号分隔,整个数组放在方括号对“ ”里。里。注意:注意:标点符号必须在英文状态下输入!标点符号必须在英文状态下输入! 在在MATLAB中,不必事先对数组的维数进行任何说明,中,不必事先对数组的维数进行任何说

20、明,存储将自动配置。存储将自动配置。 指令执行后,数组指令执行后,数组A被保存在被保存在MATLAB的工作空间中。的工作空间中。如果用户不对它进行重新赋值,或用如果用户不对它进行重新赋值,或用clearclear指令清除它,该指令清除它,该数组将会一直保存在工作空间中,直到本次数组将会一直保存在工作空间中,直到本次MATLAB指令指令窗被关闭为止。窗被关闭为止。 MATLAB对字母的大小写是敏感的。在本例中,数组赋对字母的大小写是敏感的。在本例中,数组赋给了变量给了变量A,而不是小写的,而不是小写的a。1.4.2 最简单的计算器使用方法最简单的计算器使用方法 按按照照MATLAB的变量定义规则

21、,将所有变量都定义为的变量定义规则,将所有变量都定义为数组。标量被看作(数组。标量被看作(11)的数组,向量认为是()的数组,向量认为是(1n)或)或(m1)的数组)的数组,矩阵认为是(矩阵认为是(mn)的数组。)的数组。 1.4.2 最简单的计算器使用方法最简单的计算器使用方法 【例【例1.3】数组的分行输入数组的分行输入 【说明】【说明】 在这种输入在这种输入法中法中,“Enter”键用来分隔数组键用来分隔数组中的行。中的行。1.4.2 最简单的计算器使用方法最简单的计算器使用方法 【例【例1.4】指令的续行输入指令的续行输入 【说明】【说明】 MATLAB用用3个或个或3个以上个以上的连

22、续黑点表示的连续黑点表示“续行续行”,即下,即下一行是上一行的一行是上一行的继续。继续。1.4 MATLAB指令窗操作入门指令窗操作入门 1.4.3 数值、变量和表达式数值、变量和表达式1. 数值的记述数值的记述 MATLAB的数值采用习惯的十进制表示,可以带小数点的数值采用习惯的十进制表示,可以带小数点或负号。以下记述都合法或负号。以下记述都合法 4 100 0.0001 6.789 8.7e6 1.8e56 在采用在采用IEEE浮点算法的计算机上,数值通常采用浮点算法的计算机上,数值通常采用“占用占用64位内存的双精度位内存的双精度”表示。其相对精度是表示。其相对精度是 eps (MATL

23、AB的一个预定义变量),大约保持有效数字的一个预定义变量),大约保持有效数字 16位。数值范围位。数值范围大致从大致从10-308 到到10308 。 除了一般实数数据之外,除了一般实数数据之外,MATLAB还支持复数数组和字还支持复数数组和字符串型数组。符串型数组。1.4.3 数值、变量和表达式数值、变量和表达式2. 变量命名规则变量命名规则 MATLAB 中变量名应该由一个英文字母打头,后面可以中变量名应该由一个英文字母打头,后面可以跟字母、数字、下划线等,变量名最多不超过跟字母、数字、下划线等,变量名最多不超过63个字符。个字符。 MATLAB中变量名是区分大小的。中变量名是区分大小的。

24、 有些变量名不能用有些变量名不能用 。例如,。例如,sin(它是(它是MATLAB中定义的中定义的正弦函数名正弦函数名 )。但)。但SIN和和Sin可以用。可以用。1.4.3 数值、变量和表达式数值、变量和表达式3. 预定义变量预定义变量 MATLAB中有一些所谓的中有一些所谓的“预定义变量预定义变量”(Predefined Variable),如表),如表1.1(p.8)所示。每当)所示。每当MATLAB启动时,启动时,这些变量就自动产生并取表中的预定义值。这些变量都有这些变量就自动产生并取表中的预定义值。这些变量都有特殊的含义和用途。如果用户对表中任何一个预定义变量特殊的含义和用途。如果用

25、户对表中任何一个预定义变量进行赋值,则那个变量的默认值将被用户新赋的值进行赋值,则那个变量的默认值将被用户新赋的值“临时临时”覆盖,原始的特殊取值将会丢失。覆盖,原始的特殊取值将会丢失。 习惯于其他程序设计语言编程的读者最有可能将习惯于其他程序设计语言编程的读者最有可能将预定义预定义变量变量 “i”和和“j”作为循环变量使用,而破坏其默认值。作为循环变量使用,而破坏其默认值。 建议:建议:在编写指令和程序时,尽量不对表在编写指令和程序时,尽量不对表1.1中所列预定中所列预定义变量重新赋值,以免产生混淆。义变量重新赋值,以免产生混淆。 1.4.3 数值、变量和表达式数值、变量和表达式4. 运算符

26、和运算符和表达式表达式 MATLAB中的算术运算符和其他程序设计语言的表现形中的算术运算符和其他程序设计语言的表现形式相同。但由于式相同。但由于MATLAB是面向矩阵是面向矩阵/数组运算设计的,数组运算设计的,标量被看作(标量被看作(1 1)的矩阵)的矩阵/数组,数组,“乘、除和幂乘、除和幂”运算的运算的规则与一般矩阵运算有所不同。除法运算包括了规则与一般矩阵运算有所不同。除法运算包括了“左除左除”和和“右除右除”两种运算。具体说明详见第两种运算。具体说明详见第2章。章。1.4.3 数值、变量和表达式数值、变量和表达式 MATALAB书写表达式的规则与书写表达式的规则与“手写算式手写算式”几乎

27、完全几乎完全相同,也与其他程序设计语言没有多少差别。相同,也与其他程序设计语言没有多少差别。 表达式由变量名、运算符和函数名组成。表达式由变量名、运算符和函数名组成。v 表达式按常规的优先级从左到右执行运算。表达式按常规的优先级从左到右执行运算。v 优先级的基本规定是:指数运算级别最高,乘除运算优先级的基本规定是:指数运算级别最高,乘除运算其其 次,加减运算级别最低。次,加减运算级别最低。 括号可以改变运算的次序。括号可以改变运算的次序。 书写表达式时,赋值符书写表达式时,赋值符“=”和运算符两侧允许有空格,和运算符两侧允许有空格,以增加可读性。以增加可读性。1.4 MATLAB指令窗操作入门

28、指令窗操作入门 1.4.4 工作空间与变量管理工作空间与变量管理 对对于于如如图图1.1所所示示的的默默认认窗窗口口,直直接接点点击击工工作作空空间间窗窗中中的的变量名就可以进行相应的操作。变量名就可以进行相应的操作。1.4.4 工作空间与变量管理工作空间与变量管理 右击【右击【例例1.2】结】结果图中果图中A的图标,的图标,可以根据可以根据下拉菜单下拉菜单进行相应进行相应操作。操作。1.4.4 工作空间与变量管理工作空间与变量管理 还可以双击还可以双击A的图标,在弹出的窗口中对的图标,在弹出的窗口中对A的内容进行修改,的内容进行修改,也可以改变也可以改变A的尺寸。的尺寸。 对对于于如如图图1

29、.3所所示示的的几几何何独独立立的的指指令令窗窗,则则可可以以通通过过三三个个常用指令:常用指令:who,whos和和clear进行。进行。 在在指指令令窗窗中中运运行行who指指令令和和whos指指令令,可可以以获获得得有有关关工工作作空空间间中中变变量量的的相相关关信信息息;而而运运行行clear指指令令则则可可以以删删除除一一些不再使用的变量,使整个工作空间更简洁。些不再使用的变量,使整个工作空间更简洁。1.4.4 工作空间与变量管理工作空间与变量管理 【例【例1.5】在指令窗中运行指令在指令窗中运行指令who,whos和和clear的示例。的示例。 1.4.4 工作空间与变量管理工作空

30、间与变量管理 【说明】【说明】 可以把多条指令放在同一行上输入,中间用逗号或分号可以把多条指令放在同一行上输入,中间用逗号或分号分隔。如果采用了分号,则不显示该条指令的运行结果。分隔。如果采用了分号,则不显示该条指令的运行结果。1.4.4 工作空间与变量管理工作空间与变量管理 whos指令将列出全部变量的变量名(指令将列出全部变量的变量名(Name)、大小)、大小(Size)、字节数()、字节数(Bytes)、变量类型()、变量类型(Class)。除了列出了)。除了列出了各个变量的相关信息外,还给出了整个工作空间的占用情况。各个变量的相关信息外,还给出了整个工作空间的占用情况。 MATLAB将

31、所有的变量都作为数组来看待。将所有的变量都作为数组来看待。1.4.4 工作空间与变量管理工作空间与变量管理 clear指令中,指令中,X1 和和Y1之间不能加逗号或分号,只能用空之间不能加逗号或分号,只能用空格分隔;否则该指令就会被错误地解释成删除格分隔;否则该指令就会被错误地解释成删除X1变量,然后变量,然后运行下一条指令(其内容为运行下一条指令(其内容为Y1),而下一条指令将被解释成),而下一条指令将被解释成将将Y1变量的内容显示出来,这样变量的内容显示出来,这样Y1变量就不会被删除。变量就不会被删除。 1.4.4 工作空间与变量管理工作空间与变量管理 应当特别注意:应当特别注意:单独键入

32、单独键入clear指令指令,将无条件删除,将无条件删除MATLAB工作空间中的全部变量!系统不会要求用户确认工作空间中的全部变量!系统不会要求用户确认该指令,所有变量都被清除,并且不能恢复!该指令,所有变量都被清除,并且不能恢复!1.4 MATLAB指令窗操作入门指令窗操作入门 1.4.5 指令窗的显示方式与指令行的编辑指令窗的显示方式与指令行的编辑 及标点符号及标点符号 1. 默认的输入显示方式默认的输入显示方式 从从MATLAB7.0版本开始起规定:输入指令中的版本开始起规定:输入指令中的if, for, end等控制数据流的等控制数据流的MATLAB关键词自动地采用蓝色字体关键词自动地采

33、用蓝色字体显示;输入指令中的非控制指令、数码,都自动地采用黑显示;输入指令中的非控制指令、数码,都自动地采用黑色字体显示;输入的字符串自动地采用紫色字体显示。色字体显示;输入的字符串自动地采用紫色字体显示。1.4.5 指令窗的显示方式与指令行的编辑指令窗的显示方式与指令行的编辑 及标点符号及标点符号 2. 运算结果的显示运算结果的显示 在指令窗中显示的输出有:指令执行后,数值结果采用黑在指令窗中显示的输出有:指令执行后,数值结果采用黑色字体输出;而运行过程中的出错信息用红色字体显示。色字体输出;而运行过程中的出错信息用红色字体显示。 1.4.5 指令窗的显示方式与指令行的编辑指令窗的显示方式与

34、指令行的编辑 及标点符号及标点符号 系统用系统用红色的字红色的字体告知矩体告知矩阵的维数阵的维数不一致。不一致。1.4.5 指令窗的显示方式与指令行的编辑指令窗的显示方式与指令行的编辑 及标点符号及标点符号 结果的输出一般默认采用结果的输出一般默认采用“format short g”格式,显示出格式,显示出5位有效数字。不要误认为,运算结果的精度只有位有效数字。不要误认为,运算结果的精度只有5位有效位有效数字。数字。MATLAB的数值数据通常占用的数值数据通常占用64位(位(Bit)内存,)内存,以以16位有效数字的位有效数字的“双精度双精度”进行运算和输出。进行运算和输出。 可以根据可以根据

35、需要,在指令窗中需要,在指令窗中直接输入相应的指令,获得所需的数值直接输入相应的指令,获得所需的数值计算结果显示格式。表计算结果显示格式。表1.2 (p.10)给出了这些常用的数字给出了这些常用的数字显示格式。显示格式。 【例【例1.6】 在指令窗中运行在指令窗中运行format指令的示例。指令的示例。1.4.5 指令窗的显示方式与指令行的编辑指令窗的显示方式与指令行的编辑 及标点符号及标点符号 【说明】【说明】 在选择不同的数字显在选择不同的数字显示格式时,示格式时,MATLAB并并不改变数字的大小,只不改变数字的大小,只改变显示格式。改变显示格式。 一旦键入了上述某条一旦键入了上述某条fo

36、rmat指令后,工作空间指令后,工作空间中的所有数据均采用同中的所有数据均采用同一格式显示。并且,在一格式显示。并且,在下一次键入下一次键入format指令前,指令前,所有数据均按照本次所有数据均按照本次format指令指令规定的格式显规定的格式显示。示。1.4.5 指令窗的显示方式与指令行的编辑指令窗的显示方式与指令行的编辑 及标点符号及标点符号 3. 指令窗中指令行的编辑指令窗中指令行的编辑 由于由于MATLAB把指令窗中输入的所有指令都记录在内存把指令窗中输入的所有指令都记录在内存中专门的中专门的“历史指令历史指令”(Command History)空间中,因)空间中,因此此MATLAB

37、的指令窗不仅可以对输入执行过的指令进行编的指令窗不仅可以对输入执行过的指令进行编辑和运行,而且可以对已输入的指令进行回调、编辑和重辑和运行,而且可以对已输入的指令进行回调、编辑和重新运行。常用的操作键如表新运行。常用的操作键如表1.3(p.11)所示。)所示。1.4.5 指令窗的显示方式与指令行的编辑指令窗的显示方式与指令行的编辑 及标点符号及标点符号 4. 指令窗中的标点符号指令窗中的标点符号 MATLAB中的标点符号的作用如表中的标点符号的作用如表1.4(p.12)所示。)所示。 需要特别提醒的是:需要特别提醒的是:在向指令窗中输入指令时,一定要在在向指令窗中输入指令时,一定要在英文状态下

38、输入英文状态下输入。 1.4 MATLAB指令窗操作入门指令窗操作入门 1.4.6 在线帮助在线帮助 为了帮助用户在繁多的为了帮助用户在繁多的MATLAB指令中找到所需的指令并指令中找到所需的指令并且了解指令的使用方式,且了解指令的使用方式,MATLAB提供了广泛的在线帮助提供了广泛的在线帮助功能。最常用的功能是:功能。最常用的功能是:help指令和指令和lookfor指令。指令。1. help指令指令 在指令窗中运行在指令窗中运行help指令可以获得不同程度的帮助。指令可以获得不同程度的帮助。【例【例1.7】 在指令窗中运行在指令窗中运行help指令的示例。指令的示例。1.4.6 在线帮助在

39、线帮助(1)运行)运行help引出主题(引出主题(Topics)分类列表)分类列表 1.4.6 在线帮助在线帮助(2)运行)运行help topic引出具体主题下的函数名(引出具体主题下的函数名(FunName)列表)列表 1.4.6 在线帮助在线帮助(3)运行)运行help FunName获得具体函数的用法说明获得具体函数的用法说明 1.4.6 在线帮助在线帮助(4)运行)运行help help获得如何使用获得如何使用help的信息的信息 1.4.6 在线帮助在线帮助2. lookfor指令指令 lookfor指令根据关键词提供帮助。指令根据关键词提供帮助。【例【例1.8】 寻找所有求解寻找

40、所有求解riccati方程的指令和解释语句。方程的指令和解释语句。1.4.6 在线帮助在线帮助第第2章章 数值数组及其运算数值数组及其运算 MATLAB程序设计及应用(第2版)2.1 数值数组的创建、标识、数值数组的创建、标识、 查询和定位查询和定位 出于数值运算离散本质的考虑,也出于出于数值运算离散本质的考虑,也出于“向量化向量化”快速快速处理数据的需要,处理数据的需要,MATLAB总把数值数组看作是存储和总把数值数组看作是存储和运算的基本单元,标量数据被看成是运算的基本单元,标量数据被看成是(11)的数组,而矩的数组,而矩阵则是阵则是(mn)的数组。的数组。 第第2章章 数值数组及其运算数

41、值数组及其运算 这是最简单,也是最通用的创建方法。【例这是最简单,也是最通用的创建方法。【例1.1】【例】【例1.4】就是采用这种方法创建的。复数矩阵(即二维复数】就是采用这种方法创建的。复数矩阵(即二维复数数组)的输入也很简单。数组)的输入也很简单。 2.1 数值数组的创建、标识、数值数组的创建、标识、 查询和定位查询和定位 2.1.1 数组的创建数组的创建1. 逐个元素输入法逐个元素输入法 2.1.1 数组的创建数组的创建【例【例2.1】 产生复数数组产生复数数组 注意:注意:虚虚数部分的数部分的几种输入几种输入表示方法,表示方法,其中其中i和和j的意义相的意义相同。同。 2.1.1 数组

42、的创建数组的创建 若将指令中若将指令中“j*5”改成改成“j5”,系,系统会提示出统会提示出错,因为错,因为j5 是一个未被是一个未被定义或赋值定义或赋值的变量。的变量。 2.1.1 数组的创建数组的创建 B数组创建后,数组创建后,可以可以用用real,imag,abs,angle函数来求出函数来求出其对应的实部数其对应的实部数组、虚部数组、组、虚部数组、幅值数组和相角幅值数组和相角数组(参见数组(参见p.26表表2.2)。左图给)。左图给出了求取对应的出了求取对应的虚部数组的函数虚部数组的函数指令和结果。指令和结果。 2.1.1 数组的创建数组的创建2. 冒号冒号“:”生成法生成法 MATL

43、AB定义了独特的冒号表达式来给一维定义了独特的冒号表达式来给一维“行行”数组数组赋值,其通用格式为:赋值,其通用格式为:x = a: inc: b其中,其中,a是生成数组的第一个元素;是生成数组的第一个元素;inc是采样点之间的间是采样点之间的间隔,即步距。如果(隔,即步距。如果(ba)是)是inc的整倍数,则生成数组的的整倍数,则生成数组的最后一个元素等于最后一个元素等于b;否则不等于;否则不等于b。如果。如果inc的值为正值,的值为正值,则要求则要求ab,否则结果为,否则结果为一个一个“空空”数组。如果省略了数组。如果省略了inc,则步距值默认为,则步距值默认为1。【例【例2.2】 以以0

44、为初值,为初值,0.2为步距,为步距,1.76为终值,产生一个为终值,产生一个“行行”数组。数组。 2.1.1 数组的创建数组的创建 由于由于1.76不是不是0.2的的整倍数,整倍数,所以产生所以产生的最后一的最后一个元素为个元素为1.6,而不,而不是是1.76。 2.1.1 数组的创建数组的创建3. 定数线性采样法(定数线性采样法(linspace函数)函数) 该法在设定该法在设定“总点数总点数”的前提下,均匀采样产生一维的前提下,均匀采样产生一维“行行”数组。该法的通用格式为:数组。该法的通用格式为: x = linspace (a,b,n)其中,其中,a和和b分别是生成数组的第一个和最后

45、一个元素;分别是生成数组的第一个和最后一个元素;n是是采样总点数。该指令的作用与指令采样总点数。该指令的作用与指令x = a: (b-a)/(n-1) : b相同。相同。 与前一种方法相比,在于与前一种方法相比,在于b一定能够被一定能够被采到。采到。【例【例2.3】 在指令窗中运行在指令窗中运行linspace函数的示例。函数的示例。 2.1.1 数组的创建数组的创建 2.1.1 数组的创建数组的创建4. 定数对数采样法(定数对数采样法(logspace函数)函数) 该法在设定该法在设定“总点数总点数”的前提下,经的前提下,经“常用对数常用对数”采样产采样产生一维生一维“行行”数组。在系统频率

46、分析中,常常用该指令产数组。在系统频率分析中,常常用该指令产生频率响应的频率自变量采样点。该法的通用格式为:生频率响应的频率自变量采样点。该法的通用格式为:x = logspace (a,b,n)其中,其中,n是采样总点数;生成数组的第一个元素值为是采样总点数;生成数组的第一个元素值为10a;最后一个元素值为最后一个元素值为10b。【例【例2.4】 在指令窗中运行在指令窗中运行logspace函数的示例。函数的示例。 2.1.1 数组的创建数组的创建 2.1.1 数组的创建数组的创建5. 中等规模数组的数组编辑器创建法中等规模数组的数组编辑器创建法 当数组规模较大,元素数据比较冗长且杂乱无章时

47、,借当数组规模较大,元素数据比较冗长且杂乱无章时,借助于数组编辑器(助于数组编辑器(Array Editor)比较方便。)比较方便。 【例【例2.5】 根据现有数据创建一个根据现有数据创建一个(38)的数组。的数组。 2.1.1 数组的创建数组的创建图图2.1图图2.2(1)单击图)单击图2.1所示的所示的MATLAB默认窗口上面菜单工具栏默认窗口上面菜单工具栏中的图标中的图标 ,在工作空间窗中引出一个名为,在工作空间窗中引出一个名为unnamed变量的数组编辑器,如图变量的数组编辑器,如图2.2所示。所示。 2.1.1 数组的创建数组的创建(2)在空白窗口中,按照)在空白窗口中,按照“行、列

48、行、列”次序输入数据。最后次序输入数据。最后一个数据一个数据-9输入结束后,按下【输入结束后,按下【Enter】键,或在数组编辑】键,或在数组编辑器窗口内单击鼠标,使整个数组保存在器窗口内单击鼠标,使整个数组保存在unnamed变量中。变量中。 图图2.3 2.1.1 数组的创建数组的创建(3)在数组编辑器窗口中,右键点中)在数组编辑器窗口中,右键点中unnamed变量,利用变量,利用弹出的菜单的弹出的菜单的Rename unnamed选项,把变量名改成所需选项,把变量名改成所需的名称,比如的名称,比如ABC(此时,在工作空间窗口中会出现该变(此时,在工作空间窗口中会出现该变量)。量)。【说明

49、】【说明】 运行上述指令后,在运行上述指令后,在MATLAB的当前目录窗中可以找到的当前目录窗中可以找到一个名为一个名为ABC_DAT.mat的文件,其内容即为的文件,其内容即为ABC变量。变量。该指令中的第一个字符串为保存变量的文件名,第二个该指令中的第一个字符串为保存变量的文件名,第二个字字符串符串为被保存的变量。如果以后要调用该变量,则在指令为被保存的变量。如果以后要调用该变量,则在指令窗中键入窗中键入 load ABC_DAT。 save指令和指令和load指令在处理较大规模的数组和需要多次指令在处理较大规模的数组和需要多次重复运行或者需要经过多步中间运算才能得到最终结果的重复运行或者

50、需要经过多步中间运算才能得到最终结果的数组时,有着极为重要的作用。数组时,有着极为重要的作用。 2.1.1 数组的创建数组的创建(4)假如该变量要供以后调用,则在指令窗中键入)假如该变量要供以后调用,则在指令窗中键入 save ABC_DAT ABC 2.1.1 数组的创建数组的创建6. 中等规模数组的中等规模数组的M脚本文件创建法脚本文件创建法 对于今后经常需要调用的数组,当数组规模较大而复杂对于今后经常需要调用的数组,当数组规模较大而复杂时,为它专门建立一个时,为它专门建立一个M脚本文件是值得的。脚本文件是值得的。【例【例2.6】创建和保存数组】创建和保存数组 AM的的 MyMatrix.

51、m 文件。文件。 2.1.1 数组的创建数组的创建(1)单击)单击MATLAB默认窗口上面的图标默认窗口上面的图标 ,打开,打开M文件文件编辑调试器编辑调试器(Editor/Debugger) ,并在空白填写框中输入所,并在空白填写框中输入所需的数组。需的数组。图图2.4 2.1.1 数组的创建数组的创建(2)在空白填写框中输入所需数组,并在文件的首行,编)在空白填写框中输入所需数组,并在文件的首行,编写文件名和简短说明,以便查阅写文件名和简短说明,以便查阅 。 图图2.4 2.1.1 数组的创建数组的创建图图2.4(3)点击)点击M文件编辑调试器工具条上的文件编辑调试器工具条上的Save图标

52、图标 ,在弹,在弹出的出的Windows标准风格的对话框内,选择保存文件夹,键入标准风格的对话框内,选择保存文件夹,键入新编程序的文件名(如新编程序的文件名(如MyMatrix),点击【保存(),点击【保存(S)】键,)】键,就完成了文件的保存,并且文件起名为就完成了文件的保存,并且文件起名为 MyMatrix.m 。 2.1.1 数组的创建数组的创建(4)以后只要在)以后只要在MATLAB指令窗中,键入指令窗中,键入 MyMatrix ,数组数组 AM 就会自动生成于就会自动生成于 MATLAB工作空间中。工作空间中。 实际应用中,往往需要产生一些特殊形式的数组。实际应用中,往往需要产生一些

53、特殊形式的数组。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 数组的标识数组的标识 在在MA

54、TLAB中,数组元素是按列存储的。数组中的元素中,数组元素是按列存储的。数组中的元素可以采用全下标方式和单下标方式进行标识。可以采用全下标方式和单下标方式进行标识。 全下标方式就是在引述具体数组元素时,用行下标和列下全下标方式就是在引述具体数组元素时,用行下标和列下标表示数组元素的位置。如果数组元素的下标行或列(标表示数组元素的位置。如果数组元素的下标行或列(i,j)大于数组的大小()大于数组的大小(m,n),),MATLAB会提示出错。会提示出错。 2.1.2 数组的标识数组的标识 单下标标识就是只用一个下标来指明元素在数组中的位置。单下标标识就是只用一个下标来指明元素在数组中的位置。为此,

55、需要首先对数组的所有列按为此,需要首先对数组的所有列按“先左后右先左后右”的次序、的次序、首尾相连接成首尾相连接成“一维长列一维长列”。然后,自上而下对元素位置。然后,自上而下对元素位置进行编号。以(进行编号。以(mn)数组)数组A为例,元素为例,元素A(i,j)对应的单下对应的单下标为标为 。【例【例2.8】 数组全下标标识和单下标标识的应用示例。数组全下标标识和单下标标识的应用示例。 2.1.2 数组的标识数组的标识 利利用用操操作作桌桌面面中中的的工工作作空空间间浏浏览览器器,或或者者利利用用who指指令令和和whos指指令令,可可以以对对数数组组的的大大小小进进行行查查询询。另另外外,

56、还还可可以以采采用用find指指令令进进行行特特殊殊要要求求的的数数组组元元素素定定位位;也也可可以以利利用用length指令和指令和size指令分别指令分别求取向量和矩阵维数。求取向量和矩阵维数。2.1 数值数组的创建、标识、数值数组的创建、标识、 查询和定位查询和定位 2.1.3 数组的标识数组的标识 【例【例2.9】 数组查询及定位的相关指令的应用示例。数组查询及定位的相关指令的应用示例。 2.1.3 数组的标识数组的标识 【说明】【说明】find指令指令执行的执行的结果表明,在结果表明,在 A阵中,第阵中,第1行的行的第第4,5列元素和列元素和第第2行的第行的第4列元列元素满足条件要求

57、。素满足条件要求。 为什么会如此为什么会如此显示结果?矩阵显示结果?矩阵的存储方式决定的存储方式决定的。的。 2.1.3 数组的标识数组的标识 【说明】【说明】 不管数组的维数是不管数组的维数是多少,多少,size指令指令可以可以给出数组各维的大小。给出数组各维的大小。 length指令通常用指令通常用来求取一维数组(即来求取一维数组(即向量)的长度,它可向量)的长度,它可以给出数组所有维中以给出数组所有维中的最大长度。这就是的最大长度。这就是说,说,length(A)等价于等价于max (size (A)。 MATLAB中所有变量都被认为是数组变量,因此中所有变量都被认为是数组变量,因此MA

58、TLAB的数值计算遵循数组运算的规则进行。如果在的数值计算遵循数组运算的规则进行。如果在计算过程中发生数组维数不相容的情况,计算过程中发生数组维数不相容的情况,MATLAB将自将自动给出错误信息提示。此外,动给出错误信息提示。此外,MATLAB还提供了独特的还提供了独特的点点“.”运算,因而使用起来更加方便。运算,因而使用起来更加方便。 2.2 数组的运算和操作数组的运算和操作 第第2章章 数值数组及其运算数值数组及其运算 2.2 数组的运算和操作数组的运算和操作 2.2.1 数组的代数运算数组的代数运算 1. 数组与标量的运算数组与标量的运算 数组与标量的运算包括、数组与标量的运算包括、和乘

59、方等运算,其和乘方等运算,其中、中、和和的运算完成数组中的每个元素对标量的运的运算完成数组中的每个元素对标量的运算。算。 【例【例2.10】 数组与标量运算的示例。数组与标量运算的示例。 2.2.1 数组的代数运算数组的代数运算 2.2.1 数组的代数运算数组的代数运算 MATLAB用符号用符号“”表示乘方。求数组乘方时要求数组表示乘方。求数组乘方时要求数组为方阵为方阵(参见数组的乘法运算)。参见数组的乘法运算)。【例【例2.11】 矩阵乘方运算的示例。矩阵乘方运算的示例。 【说明】【说明】 B2 完成完成BB运运算。算。 B(-1) 实际上是实际上是求求B的逆矩阵。的逆矩阵。 B(0.2)

60、实际上实际上是求矩阵是求矩阵P , 使使P5B。 2.2.1 数组的代数运算数组的代数运算 如果要完成数组如果要完成数组中每个元素的乘中每个元素的乘方运算,则需要方运算,则需要用到点运算(后用到点运算(后面介绍)。面介绍)。2. 数组的转置运算数组的转置运算 数组数组A的转置用的转置用A表示。对于实数数组,即为转置运算;表示。对于实数数组,即为转置运算;对于复数数组,则为共轭转置运算(即对于复数数组,则为共轭转置运算(即 Hermit转置运算)。转置运算)。另外,用另外,用A.表示表示A的非共轭转置运算。的非共轭转置运算。 2.2.1 数组的代数运算数组的代数运算 【例【例2.12】 矩阵转置

61、运算的示例。矩阵转置运算的示例。 2.2.1 数组的代数运算数组的代数运算 实数数组的实数数组的共轭和非共轭共轭和非共轭运算结果相同。运算结果相同。 2.2.1 数组的代数运算数组的代数运算 复数数组的复数数组的共轭和非共轭共轭和非共轭运算结果不同。运算结果不同。 数组数组A 和和B的尺寸完全相同时(即皆为(的尺寸完全相同时(即皆为(mn)数组)数组),可以进行加减法运算;如果可以进行加减法运算;如果A 和和B的尺寸不相等,的尺寸不相等, MATLAB将自动给出错误信息,提示两个数组的尺寸不将自动给出错误信息,提示两个数组的尺寸不相等。相等。【例【例2.13】 数组加减法运算的示例。数组加减法

62、运算的示例。 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数组进行乘法运算

63、。数组进行乘法运算。 2.2.1 数组的代数运算数组的代数运算 2.2.1 数组的代数运算数组的代数运算 5. 数组的除法运算数组的除法运算 数组除法是数组除法是MATLAB专门为二维数组(即矩阵)设计的一专门为二维数组(即矩阵)设计的一种运算。矩阵的除法运算包括左除种运算。矩阵的除法运算包括左除“”和右除和右除“/”两种运两种运算。其中,算。其中, 左除:左除:AB=A-1B ,A为方阵(即求方程为方阵(即求方程Ax=B的解);的解); 右除:右除:A/B=AB-1, B为方阵(即求方程为方阵(即求方程xA=B的解)。的解)。【例【例2.15】 矩阵除法运算的示例。矩阵除法运算的示例。 如果

64、改成如果改成A/B,会出,会出现什么结果现什么结果? 2.2.1 数组的代数运算数组的代数运算 6. 数组的点运算数组的点运算 MATLAB中定义了一种特殊的运算,即所谓的点运算。中定义了一种特殊的运算,即所谓的点运算。两个数组之间的点运算是它们之间对应元素的直接运算。两个数组之间的点运算是它们之间对应元素的直接运算。显然,这两个数组的尺寸应该完全相同(显然,这两个数组的尺寸应该完全相同(即皆为(即皆为(mn)数组数组)。另外,数组与标量的运算也可以看成是标量常数)。另外,数组与标量的运算也可以看成是标量常数对数组的点运算。对数组的点运算。 2.2.1 数组的代数运算数组的代数运算 【例【例2

65、.16】 数组的点运算示例。数组的点运算示例。 要点:要点:“.”后必须立即紧跟运算符才表示点运算。后必须立即紧跟运算符才表示点运算。 2.2.1 数组的代数运算数组的代数运算 【说明】【说明】 C=A*B是是普通矩阵乘普通矩阵乘积积 运算。运算。 CC=aij*bij ;AA=aij2。 7. 数组的求幂运算数组的求幂运算 2.2.1 数组的代数运算数组的代数运算 数组求幂运算包括数组与常数和数组与数组的幂运算,用数组求幂运算包括数组与常数和数组与数组的幂运算,用点运算的形式表示。点运算的形式表示。 【例【例2.17】矩阵求幂运算的示例。】矩阵求幂运算的示例。 2.2.1 数组的代数运算数组

66、的代数运算 【说明】 A1=aij3;A2=3aij 。 A2=3.A 中,中,第一个第一个“.”表示小数点表示小数点(底数为(底数为3.0),),第二个第二个“.”和和“”配合配合表示表示A数组求数组求幂的点运算。幂的点运算。 A3= aijbij。 2.2 数组的运算和操作数组的运算和操作 2.2.2 数组的块操作数组的块操作 MATLAB提供了很多简便、智能的方式,可以对数组进提供了很多简便、智能的方式,可以对数组进行元素更改、插入子块、提取子块、重排子块、扩充数组行元素更改、插入子块、提取子块、重排子块、扩充数组等操作。这里,最重要的是冒号等操作。这里,最重要的是冒号“:”的应用。在的

67、应用。在MATLAB中,冒号表示全部。中,冒号表示全部。【例【例2.18】 数组块操作的示例。数组块操作的示例。 2.2.2 数组的块操作数组的块操作 2.2.2 数组的块操作数组的块操作 在在MATLAB中,不需要定中,不需要定义数组即可使义数组即可使用,而且将一用,而且将一个已存在数组个已存在数组的尺寸进行扩的尺寸进行扩展甚为容易。展甚为容易。能否将能否将一个已一个已存在数组的尺存在数组的尺寸缩小?后面寸缩小?后面介绍。介绍。2.2 数组的运算和操作数组的运算和操作 2.2.3 数组的翻转操作数组的翻转操作 MATLAB提供了几种指令(函数),可以进行数组的翻提供了几种指令(函数),可以进

68、行数组的翻转操作。转操作。【例【例2.19】 数组翻转操作的示例。数组翻转操作的示例。 2.2.3 数组的翻转操作数组的翻转操作 2.2.3 数组的翻转操作数组的翻转操作 2.2 数组的运算和操作数组的运算和操作 2.2.4 数组运算的常用数学函数数组运算的常用数学函数 对于(对于(mn)数组)数组 数学函数数学函数 的运算规则为的运算规则为 2.2.4 数组运算的常用数学函数数组运算的常用数学函数 数组运算的常用数学函数如表数组运算的常用数学函数如表2.2(p.26)所示。)所示。 注意:注意:表表2.2中的数组函数的运算都是点运算。三角函数中的数组函数的运算都是点运算。三角函数及其相关函数

69、的输入宗量的单位都是弧度。及其相关函数的输入宗量的单位都是弧度。【例【例2.20】 数组数学函数运算的示例。数组数学函数运算的示例。 2.2.4 数组运算的常用数学函数数组运算的常用数学函数 【说明】【说明】 C=exp(A)完成的是完成的是C=exp(aij)运算运算;D=abs(B)完完成的是成的是D=abs(bij)运算,运算,不要求不要求B阵为阵为方阵。方阵。 这是这是MATLAB中特有的三个概念和中特有的三个概念和“预定义变量预定义变量”。 2.3 “无穷大无穷大”、“非数非数”和和“空空”数组数组 第第2章章 数值数组及其运算数值数组及其运算 2.3 “无穷大无穷大”、“非数非数”

70、和和“空空”数组数组 2.3.1 “无穷大无穷大” “无穷大无穷大” 表示表示“infinite”,是由一个非零数除以,是由一个非零数除以0得到得到的或者是在计算中出现的数值上溢产生的,在的或者是在计算中出现的数值上溢产生的,在MATLAB中中用用Inf或或inf记叙。记叙。MATLAB允许除数为允许除数为0,并给出,并给出“Inf”作作为本步计算结果,同时继续下面程序的运行。为本步计算结果,同时继续下面程序的运行。【例【例2.21】 产生产生Inf的计算示例。的计算示例。 2.3.1 “无穷大无穷大” 2.3 “无穷大无穷大”、“非数非数”和和“空空”数组数组 2.3.2 “非数非数” “非

71、数非数”表示表示“Not-a-Number”,在,在MATLAB中用中用NaN或或nan记叙。按照记叙。按照IEEE的规定,的规定, 等运算都会等运算都会产生产生NaN。 根据根据IEEE的数学规范,的数学规范,NaN具有以下性质:具有以下性质: 对对NaN的所有运算结果都为的所有运算结果都为NaN,即,即NaN具有传递性;具有传递性; NaN没有没有“大小大小”的概念,因此不能比较两个的概念,因此不能比较两个NaN的大小。的大小。 2.3.2 “非数非数” NaN的功效:的功效:真实记述真实记述 等运算的后果;等运算的后果;避免因避免因 等运算而造成程序执行的中断;等运算而造成程序执行的中断

72、; 在测量数据处理中,可以用来标识在测量数据处理中,可以用来标识“野点(非正常点)野点(非正常点)”; 在数据可视化中,用来裁剪图形。在数据可视化中,用来裁剪图形。【例【例2.22】 NaN的产生和性质演示。的产生和性质演示。 2.3.2 “非数非数” 2.3.2 “非数非数” 2.3.2 “非数非数” 【说明】【说明】 关于关系关于关系运算见运算见5.3.1节。节。 2.3 “无穷大无穷大”、“非数非数”和和“空空”数组数组 2.3.3 “空空” 数组数组 “空空”数组用符号数组用符号 表示,它不是元素取值为表示,它不是元素取值为0的数组,的数组,而是一个行数或列数为而是一个行数或列数为0或

73、者行列数均为或者行列数均为0的数组。换句话的数组。换句话说,说, 是一个标志,表示逻辑上的是一个标志,表示逻辑上的“无无”或或“不存在不存在”。 的功效:的功效: 在没有在没有 参与运算时,计算结果中的参与运算时,计算结果中的“ ”可以合理地可以合理地解释解释 “所得结果的含义所得结果的含义”; 运用运用 对其他非空数组赋值,可以使数组的尺寸变小,对其他非空数组赋值,可以使数组的尺寸变小,但不改变那数组的维数。但不改变那数组的维数。 2.3.3 “空空” 数组数组【例【例2.23】 的产生、查询及应用。的产生、查询及应用。【说明】【说明】 因为数组因为数组x 中的中的所有元素都小于所有元素都小

74、于7,y=find(x7)执行执行的结果是没有找到的结果是没有找到大于大于7的值,所以的值,所以返回一个返回一个10的的“空空”数组。数组。 指令指令size() 执执行的结果说明行的结果说明(00)的)的“空空”数组是存在的。数组是存在的。 2.3.3 “空空” 数组数组 用于子数用于子数组的删除和大组的删除和大数组的收缩。数组的收缩。 指令指令clear A和和A(:)= 的的执行结果执行结果有何不同?有何不同?MATLAB程序设计及应用第第3章章 字符串、元胞和结构数组字符串、元胞和结构数组 3.1 字符串数组字符串数组 MATLAB可以给一串文字进行定义并执行一些字符串的可以给一串文字

75、进行定义并执行一些字符串的处理与运算。与数值计算相比,字符串运算在处理与运算。与数值计算相比,字符串运算在MATLAB中的重要性较小,并且提供的函数和操作也较少。但是,中的重要性较小,并且提供的函数和操作也较少。但是,如果没有字符串以及相应的操作,数据的可视化操作将发如果没有字符串以及相应的操作,数据的可视化操作将发生困难。生困难。 第第3章章 字符串、元胞和结构数组字符串、元胞和结构数组 字符串与数值是两种不同的数据类(字符串与数值是两种不同的数据类(Class),因此它们),因此它们的创建方式也就不同。的创建方式也就不同。 数值数组通常是在数值数组通常是在MATLAB指令窗中采用数字赋值方

76、式指令窗中采用数字赋值方式直接创建的。字符串数组(直接创建的。字符串数组(Character String Array)的创)的创建方式是:在建方式是:在MATLAB指令窗中,先把待创建的字符串放指令窗中,先把待创建的字符串放在单引号对在单引号对“”中,再按下【中,再按下【Enter】键。】键。 注意:注意:单引号对必须在英文状态下输入。单引号对必须在英文状态下输入。单引号对是单引号对是MATLAB识别输入内容识别输入内容“身份身份”(是变量名、数字,还是(是变量名、数字,还是字符串)所必须的。字符串)所必须的。 字符串创建后,可以用字符串创建后,可以用who,whos,size等指令或函数对

77、等指令或函数对它进行属性判别、元素标识等操作。它进行属性判别、元素标识等操作。 3.1 字符串数组字符串数组3.1.1 字符串的创建、属性和标识字符串的创建、属性和标识【例【例3.1】 数值量与字符串区别的示例。数值量与字符串区别的示例。3.1.1 字符串的创建、属性和标识字符串的创建、属性和标识【说明】【说明】 class函数函数用于对变量用于对变量的类别进行的类别进行判别。判别。3.1.1 字符串的创建、属性和标识字符串的创建、属性和标识 a和和b属于不同种类的数据,内存中所占字节不相同。属于不同种类的数据,内存中所占字节不相同。3.1.1 字符串的创建、属性和标识字符串的创建、属性和标识

78、【例【例3.2】 字符串的基本属性、元素的标识和简单操作的示例。字符串的基本属性、元素的标识和简单操作的示例。(1)创建字符串)创建字符串3.1.1 字符串的创建、属性和标识字符串的创建、属性和标识(2)字符串的大小)字符串的大小x是一个字符串。该字是一个字符串。该字符串内的每个字符符串内的每个字符(英文字母、空格和(英文字母、空格和标点符号都被视为是标点符号都被视为是平等的)均占据一个平等的)均占据一个元素位。元素位。字符串的大小用字符串的大小用size指指令获得。令获得。x是一个字符串向量是一个字符串向量3.1.1 字符串的创建、属性和标识字符串的创建、属性和标识(3)字符串的元素标识)字

79、符串的元素标识 x是一个字符串向量。是一个字符串向量。MATLAB按从左到右的按从左到右的次序用自然数数码(次序用自然数数码(1,2,3等)标识其中字符等)标识其中字符的位置。的位置。【说明】【说明】 x(1:6)是从字符串是从字符串x中提中提出一个子字符串。出一个子字符串。 x(end:-1:1)是将字符串是将字符串x倒排。倒排。3.1.1 字符串的创建、属性和标识字符串的创建、属性和标识(4)字符串的)字符串的ASCII码码 字符串的存储是用字符串的存储是用ASCII码实现的。指令码实现的。指令abs和和double都都可以用来获取字可以用来获取字符串所对应的符串所对应的ASCII码数码数

80、值数组,而指令值数组,而指令char则可则可以把以把ASCII码码数值数值数组转数组转变为字符串。变为字符串。【说明】【说明】 在指令在指令char把数值转换把数值转换成字符时,非整数部分将成字符时,非整数部分将被截尾,而负数将导致出被截尾,而负数将导致出现现“警告警告”信息。信息。 中文字符可以转换。中文字符可以转换。3.1.1 字符串的创建、属性和标识字符串的创建、属性和标识(5)对字符串)对字符串ASCII码码数组的操作数组的操作由于由于ASCII码数组是数值码数组是数值数组,所以有关数组的各数组,所以有关数组的各种运算、函数以及操作对种运算、函数以及操作对ASCII码数组都是适用的。码

81、数组都是适用的。 【说明】【说明】 指令指令xxx=find(x=a&x cellplot(A)所得结果如图所得结果如图3.1所示。所示。图图3.13.2.1 元胞数组的创建和显示元胞数组的创建和显示3.2 元胞数组元胞数组3.2.2 元胞数组的元胞数组的扩充和收缩扩充和收缩 元胞数组的扩充和收缩的方法大致与数值数组的情况相同。元胞数组的扩充和收缩的方法大致与数值数组的情况相同。 【例【例3. 11】在【例】在【例3.8】的基础上扩充和收缩元胞数组。】的基础上扩充和收缩元胞数组。【例【例3.8】的运行结果】的运行结果3.2.2 元胞数组元胞数组的扩充和收缩的扩充和收缩 (1)元胞数)元胞数组的

82、组的“列列”扩扩充和充和“行行”扩扩充充 3.2.2 元胞数组的元胞数组的扩充和收缩扩充和收缩 (2)元胞数)元胞数组的收缩组的收缩 3.2 元胞数组元胞数组3.2.3 元胞数组的元胞数组的内容获取内容获取 在创建了元胞数组后,可以使用其中的元素进行各种在创建了元胞数组后,可以使用其中的元素进行各种MATLAB的操作和运算,前面介绍过的操作和运算,前面介绍过可以对元胞数组的可以对元胞数组的内容进行寻访。内容进行寻访。【例【例3. 12】在【例】在【例3.6】的基础上获取元胞数组的元素内容。】的基础上获取元胞数组的元素内容。【例【例3.6】的】的运行结果运行结果3.2.3 元胞数组的元胞数组的内

83、容获取内容获取(1)取出某)取出某个元胞元素的个元胞元素的内容内容 【说明】【说明】 X1是数组,是数组,X2 是标量。是标量。3.2.3 元胞数组的元胞数组的内容获取内容获取(2)获取元胞)获取元胞数组的元素数组的元素 【说明】【说明】 X3是元胞是元胞数组。数组。3.2.3 元胞数组的元胞数组的内容获取内容获取(3)使用)使用deal函函数数获取多个元胞获取多个元胞元素的内容元素的内容 3.3 结构数组结构数组 与元胞数组相比,结构数组(与元胞数组相比,结构数组(Structure Array)的内容更)的内容更加丰富,应用更加广泛。结构数组的基本组成是结构加丰富,应用更加广泛。结构数组的

84、基本组成是结构(Structure),每一个结构都包含了多个域(),每一个结构都包含了多个域(Fields),),每个域都可以存放各种类型的数据。结构数组只有划分了每个域都可以存放各种类型的数据。结构数组只有划分了域以后才能使用。例如,有一个结构数组,其第域以后才能使用。例如,有一个结构数组,其第1个域为用个域为用字符串表示的姓名,第字符串表示的姓名,第2个域为用标量表示的医疗费用,第个域为用标量表示的医疗费用,第3个域为用数值数组表示的测试结果,这样的一个结构数组个域为用数值数组表示的测试结果,这样的一个结构数组可以用来表示患者的病情。可以用来表示患者的病情。 与数值数组一样,结构数组可以是

85、一维、二维或者更高维。与数值数组一样,结构数组可以是一维、二维或者更高维。结构数组的标识方式也与数值数组相同,分为全下标方式结构数组的标识方式也与数值数组相同,分为全下标方式和单下标方式。和单下标方式。第第3章章 字符串、元胞和结构数组字符串、元胞和结构数组 3.3 结构数组结构数组3.3.1 结构数组的创建结构数组的创建1. 直接使用赋值指令创建直接使用赋值指令创建 使用赋值指令可以对结构数组的各个域进行赋值。注意:使用赋值指令可以对结构数组的各个域进行赋值。注意:结结构名与域名之间用构名与域名之间用“.”分隔。分隔。 【例【例3.13】直接使用赋值指令创建结构数组的示例。】直接使用赋值指令

86、创建结构数组的示例。 3.3.1 结构数组的创建结构数组的创建【说明】【说明】 PS是结构数组,是结构数组,PS(1)和和PS(2)是结构,是结构,name,billing和和test是是域域。 在在MATLAB的工作的工作空间中,结构数组的空间中,结构数组的图标为图标为 。 在本步的赋值指令后,在本步的赋值指令后,PS的内容被显示。为什的内容被显示。为什么?注意与下面的区别。么?注意与下面的区别。3.3.1 结构数组的创建结构数组的创建 MATLAB规定:当规定:当结构中包含两个以上结构中包含两个以上的结构元素时,不再的结构元素时,不再显示各个元素的内容,显示各个元素的内容,而显示数组的结构

87、信而显示数组的结构信息;当结构仅包含一息;当结构仅包含一个结构元素时,则显个结构元素时,则显示出各个元素的内容。示出各个元素的内容。 【例【例3.14】利用】利用struct函数创建结构数组的示例。函数创建结构数组的示例。 3.3.1 结构数组的创建结构数组的创建2. 利用利用struct函数创建函数创建 分步显示结果与前分步显示结果与前例完全相同。例完全相同。3.3 结构数组结构数组3.3.2 结构数组的获取和设置结构数组的获取和设置 1. 使用使用“.”符号获取结构数组的数符号获取结构数组的数据据 【例【例3.15】在【例】在【例3.14】的基础上获取结构数组的元素内容。】的基础上获取结构

88、数组的元素内容。 3.3.2 结构数组的获取和设置结构数组的获取和设置 【说明】【说明】 Y1是一个结构(从结是一个结构(从结构数组构数组PS中取出),中取出),Y2是数组,是数组,Y3是标量。是标量。 本例表明,在希望获取本例表明,在希望获取某个结构数组中的某个某个结构数组中的某个具体数据时,需要知道具体数据时,需要知道该数据所在的该数据所在的结构元素结构元素以及相应的域和具体的以及相应的域和具体的数组位置。数组位置。 “.”符号符号用于指明用于指明结构数组的域。结构数组的域。3.3.2 结构数组的获取和设置结构数组的获取和设置 2. 利用利用getfield函数获取结构数组的数据函数获取结

89、构数组的数据 【例【例3.16】在【例】在【例3.15】的基础上利用】的基础上利用getfield函数获取结函数获取结构数组的元素内容。构数组的元素内容。 getfield函数的调用格式为:函数的调用格式为: getfield(array,array_index,field,field_index)【说明】【说明】 array是结构数组名,是结构数组名,array_index是结构的下标,是结构的下标,field是是域名,域名,field_index是域中数组元素的下标。是域中数组元素的下标。3.3.2 结构数组的获取和设置结构数组的获取和设置 本例表明,本例表明, getfield函数函数中

90、的某些项中的某些项是可以缺省是可以缺省的。的。3.3.2 结构数组的获取和设置结构数组的获取和设置 3. 利用利用setfield函数设置结构数组的数据函数设置结构数组的数据 setfield函数函数的调用格式为:的调用格式为: new_structure=setfield(array,array_index,field,field_index,V)【说明】【说明】 new_structure是要修改的结构数组名,是要修改的结构数组名,V是设置的值。是设置的值。 【例【例3.17】在【例】在【例3.16】的基础上利用】的基础上利用setfield函数函数设置结构设置结构数组的元素内容。数组的元

91、素内容。 3.3.2 结构数组的获取和设置结构数组的获取和设置 可否将赋值指令改为可否将赋值指令改为: PS(1).name=王二王二;? ?3.3.2 结构数组的获取和设置结构数组的获取和设置 4. 利用利用fieldnames函数获取结构数组的所有域函数获取结构数组的所有域 【例【例3.18】在【例】在【例3.17】的基础上利用】的基础上利用fieldnames函数函数获取结获取结构数组的所有域。构数组的所有域。 【说明】【说明】 Y6是元胞数组,各变量是元胞数组,各变量在工作空间的数据类型如在工作空间的数据类型如图图3.2所示(见下页)。所示(见下页)。 3.3.2 结构数组的获取和设置

92、结构数组的获取和设置 图图3.2 3.3 结构数组结构数组3.3.3 结构数组的扩充和收缩结构数组的扩充和收缩 1. 结构数组的扩充和收缩结构数组的扩充和收缩 【例【例3.19】在【例】在【例3.18】的基础上演示结构数组】的基础上演示结构数组 PS的扩充的扩充和收缩。和收缩。 3.3.3 结构数组的扩充和收缩结构数组的扩充和收缩 结构数组的结构数组的扩充方法与数扩充方法与数值数组的一致。值数组的一致。只不过未定义只不过未定义的元素为的元素为 。参见【例。参见【例2.18】。】。 3.3.3 结构数组的扩充和收缩结构数组的扩充和收缩 结构数组的结构数组的收缩和保留部收缩和保留部分的内容。分的内

93、容。3.3.3 结构数组的扩充和收缩结构数组的扩充和收缩 2. 增添域和删除域增添域和删除域 增添结构数组域的最常用方法是向域直接赋值,而域的删除增添结构数组域的最常用方法是向域直接赋值,而域的删除就必须依靠就必须依靠rmfield函数才能完成。函数才能完成。【例【例3.20】在【例】在【例3.19】的基础上对结构数组】的基础上对结构数组PS进行域的增进行域的增添和删除。添和删除。3.3.3 结构数组的扩充和收缩结构数组的扩充和收缩 (1)增添域)增添域:在数组中任何一个结构上进行域的增添,其影在数组中任何一个结构上进行域的增添,其影响遍及整个结构数组响遍及整个结构数组 虽然,仅仅对第一个结构

94、增加虽然,仅仅对第一个结构增加了域了域“diagnosis”,但,但PS的第的第二个结构也有了四个域。二个结构也有了四个域。PS(2). diagnosis=?3.3.3 结构数组的扩充和收缩结构数组的扩充和收缩 (2)删除域的操作也是对整个结构数组实施的)删除域的操作也是对整个结构数组实施的 MATLAB程序设计及应用第第4章章 数据和函数的可视化数据和函数的可视化 除了具有强大的数值计算功能外,除了具有强大的数值计算功能外,MATLAB为广大工程技为广大工程技术人员接受和青睐的另一个重要原因是它提供了极其方便的术人员接受和青睐的另一个重要原因是它提供了极其方便的绘图功能,可以绘制多种类型的

95、二维、三维图形,也可以进绘图功能,可以绘制多种类型的二维、三维图形,也可以进行动画演示。本书主要介绍二维图形的绘制指令。行动画演示。本书主要介绍二维图形的绘制指令。 在二维图形绘制指令中,最重要也是最基本的指令是在二维图形绘制指令中,最重要也是最基本的指令是plot指指令。其它许多特殊绘图指令都是以它为基础而形成的,调用令。其它许多特殊绘图指令都是以它为基础而形成的,调用格式也与其大同小异。因此,本章围绕格式也与其大同小异。因此,本章围绕plot指令指令展开。展开。第第4章章 数据和函数的可视化数据和函数的可视化4.1 二维曲线绘制的基本指令二维曲线绘制的基本指令plot 第第4章章 数据和函

96、数的可视化数据和函数的可视化4.1.1 基本调用格式基本调用格式plot(x,y,s) 这是这是plot指令的最典型、最基本的调用格式。该指令打开一指令的最典型、最基本的调用格式。该指令打开一个默认的图形窗,将各个采样数据点用直线连接来绘制图形,个默认的图形窗,将各个采样数据点用直线连接来绘制图形,它还自动将数值标尺和单位注加到两个坐标轴上。如果已经它还自动将数值标尺和单位注加到两个坐标轴上。如果已经存在一个图形窗,存在一个图形窗,plot指令将刷新当前窗中的图形。该指令的指令将刷新当前窗中的图形。该指令的输入宗量输入宗量(x,y,s)称为平面绘线的三元组。它们分别指定平称为平面绘线的三元组。

97、它们分别指定平面曲线的几何位置、线型、点形和色彩。面曲线的几何位置、线型、点形和色彩。 【说明】【说明】 x,y是长度相同的一维数组,分别用来指定采样点的横坐是长度相同的一维数组,分别用来指定采样点的横坐标和纵坐标。标和纵坐标。 第第3个输入宗量个输入宗量s是字符串,用来指定是字符串,用来指定“连续线型连续线型”或或/和和“离散点形以及点线色彩离散点形以及点线色彩”(见(见p.45表表4.1、表、表4.2和表和表4.3)。)。例如,例如,plot(x,y, r : o)指令的字符串指令的字符串r : o中中, “r”表示曲表示曲线的色彩为线的色彩为“红色红色”; “:”表示曲线的线型采用表示曲

98、线的线型采用“虚线虚线”;“o” 表示曲线上给定的离散数据点用表示曲线上给定的离散数据点用“圆圈圆圈”标记出。标记出。 第第3个输入宗量个输入宗量s可以缺省,也可以缺省其中的某些字符,可以缺省,也可以缺省其中的某些字符,此时此时plot指令将使用默认设置绘制曲线:若缺省线型控制字符,指令将使用默认设置绘制曲线:若缺省线型控制字符,则曲线一律用则曲线一律用“细实线细实线”线型;若缺省数据点标记字符,则线型;若缺省数据点标记字符,则不标记给定的离散数据点;若同时缺省色彩控制字符和线型不标记给定的离散数据点;若同时缺省色彩控制字符和线型控制字符,则只按照数据点标记控制字符画出给定的离散数控制字符,则

99、只按照数据点标记控制字符画出给定的离散数据点,而不将它们连接成线;若指令中没有第三输入宗量,据点,而不将它们连接成线;若指令中没有第三输入宗量,即即s不加指定,则采用不加指定,则采用“蓝色细实线蓝色细实线”绘制曲线。绘制曲线。4.1.1 基本调用格式基本调用格式plot(x,y,s) 4.1 二维曲线绘制的基本指令二维曲线绘制的基本指令plot 4.1.2 plot 指令的衍生调用格式指令的衍生调用格式 1. 单色或多色绘制多条曲线单色或多色绘制多条曲线 plot(X,Y,s) 用用s指定的点形线型色彩绘制多条曲线指定的点形线型色彩绘制多条曲线plot(X,Y) 采用默认的色彩次序用细实线绘制

100、多条曲线采用默认的色彩次序用细实线绘制多条曲线 【说明】【说明】 当当X,Y均为均为(mn)数组时,将绘制出数组时,将绘制出n条曲线。每条曲线条曲线。每条曲线的几何位置由的几何位置由X,Y对应的列确定。对应的列确定。 当当X,Y两个输入宗量中有一个是一维数组,且该数组的长两个输入宗量中有一个是一维数组,且该数组的长度与另一个输入宗量的度与另一个输入宗量的“行数行数”(或(或“列数列数”)相等时,将)相等时,将绘制出绘制出“列数列数”(或(或“行数行数”)条曲线。)条曲线。 plot(X,Y,s) 只能用只能用s指定的点形线型色彩绘制多条曲线。指定的点形线型色彩绘制多条曲线。 plot(X,Y)

101、 指令采用细实线绘制曲线指令采用细实线绘制曲线,并按照篮、绿、红、青、并按照篮、绿、红、青、紫红、黄、黑的次序着色,以提高紫红、黄、黑的次序着色,以提高“观察性观察性”。4.1.2 plot 指令的衍生调用格式指令的衍生调用格式 4.1.2 plot 指令的衍生调用格式指令的衍生调用格式 2. 多三元组绘制多条曲线多三元组绘制多条曲线 plot(X1,Y1,s1,X2,Y2,s2,Xn,Yn,sn) 【说明】【说明】 该调用格式的输入宗量由多个该调用格式的输入宗量由多个“三元组三元组”(Xn,Yn,sn)组组 成。成。 每个三元组是独立的,它的工作方式与每个三元组是独立的,它的工作方式与plo

102、t(X,Y,s) 完全完全相同。相同。 4.1.2 plot 指令的衍生调用格式指令的衍生调用格式 3. 单输入宗量绘制曲线单输入宗量绘制曲线 plot(Y) 【说明】【说明】 当当Y是一维数组时,以该数组的下标为横坐标,是一维数组时,以该数组的下标为横坐标,Y为纵坐为纵坐标绘制一条曲线。标绘制一条曲线。 当当Y是二维数组时,以该数组的是二维数组时,以该数组的“行下标行下标”为横坐标,为横坐标,Y为纵坐标绘制为纵坐标绘制“列数列数”条曲线。条曲线。4.1.2 plot 指令的衍生调用格式指令的衍生调用格式 【例【例4.1】 试绘制下列函数图形试绘制下列函数图形 第二条指令为何要加上转第二条指令

103、为何要加上转置?注意第四条指令。此置?注意第四条指令。此时,时,cos(t)是与是与t尺寸相同的尺寸相同的列向量,它与行向量列向量,它与行向量k的相的相乘必须符合相容条件。也乘必须符合相容条件。也可以直接观察工作空间中可以直接观察工作空间中的变量的尺寸,得到此结的变量的尺寸,得到此结论。论。 绘制的曲线图在下页。绘制的曲线图在下页。4.1.2 plot 指令的衍生调用格式指令的衍生调用格式 如果把最后一条指令如果把最后一条指令改为:改为: tt=t; plot(tt,y)所得图形相同。说明所得图形相同。说明plot指令会自动进行数指令会自动进行数组元素和矩阵元素的组元素和矩阵元素的行列匹配。但

104、如果进行列匹配。但如果进一步改成:一步改成:tt=tt, 1; plot(tt,y)则会提示出错。此时,则会提示出错。此时,横坐标元素个数和纵横坐标元素个数和纵坐标元素个数不可能坐标元素个数不可能相等。相等。4.1.2 plot 指令的衍生调用格式指令的衍生调用格式 指令指令plot(t)的运的运行结果,横坐标行结果,横坐标为为t向量的行下标,向量的行下标,纵坐标为纵坐标为t向量中向量中的元素值。的元素值。4.1.2 plot 指令的衍生调用格式指令的衍生调用格式 指令指令plot(y)的运行的运行结果。注意与图结果。注意与图4.1的差别。横坐标为的差别。横坐标为y矩阵的行下标,矩阵的行下标,

105、纵坐标为纵坐标为y矩阵中矩阵中的元素值。的元素值。4.1.2 plot 指令的衍生调用格式指令的衍生调用格式 指令指令plot(y,t)的运的运行结果。注意与行结果。注意与图图4.1的差别。横的差别。横坐标和纵坐标互坐标和纵坐标互换了位置。换了位置。4.1.2 plot 指令的衍生调用格式指令的衍生调用格式 【例【例4.1】 plot指令扩展调用格式的示例。指令扩展调用格式的示例。4.1.2 plot 指令的衍生调用格式指令的衍生调用格式 【说明】【说明】 在指令在指令plot(x,y,-rs,LineWidth,2,.MarkerEdgeColor,k,.MarkerFaceColor,g,

106、.MarkerSize,10)中,中, “LineWidth,2 ”指定线宽为指定线宽为2(默认值为(默认值为0.5),), “MarkerEdgeColor,k”指定指定离散数据点离散数据点的边界色彩为黑色(默认色的边界色彩为黑色(默认色彩为曲线色彩),彩为曲线色彩), “MarkerFaceColor,g”指定指定离散数据点的离散数据点的点域色彩为绿色(默认色点域色彩为绿色(默认色彩为白色),彩为白色), “MarkerSize,10”指定绘制指定绘制离散数据点离散数据点的大小为的大小为10(默认值为(默认值为6.0)。 建议:建议:利用利用help指令进一步学习指令进一步学习plot指令

107、的使用方法。指令的使用方法。4.2 坐标轴控制和图形标识坐标轴控制和图形标识第第4章章 数据和函数的可视化数据和函数的可视化4.2.1 坐标轴的控制坐标轴的控制 MATLAB给出了一系列便于使用的指令,允许用户根据自给出了一系列便于使用的指令,允许用户根据自己的需要和喜好改变己的需要和喜好改变plot指令指令的绘图默认设置。的绘图默认设置。 MATLAB用指令用指令axis对坐标轴进行调整和控制。该指令的功对坐标轴进行调整和控制。该指令的功能非常丰富,表能非常丰富,表4.4(p.48)列出了常用的指令格式和功能。)列出了常用的指令格式和功能。 注意注意axis(x1,x2,y1,y2)指令的格

108、式规定。指令的格式规定。4.2.1 坐标轴的控制坐标轴的控制【例例4.3】 观察坐标轴控制的示例。观察坐标轴控制的示例。(1)采用默认的坐标范围)采用默认的坐标范围【说明】【说明】 MATLAB按照给定的数据按照给定的数据自动确定坐标取向、范围、自动确定坐标取向、范围、刻度和高宽比。刻度和高宽比。4.2.1 坐标轴的控制坐标轴的控制(2)控制坐标范围)控制坐标范围【说明】【说明】 MATLAB根据用户指定的数值确根据用户指定的数值确定坐标轴参数的范围,也就相当于定坐标轴参数的范围,也就相当于把原图形进行放大或缩小处理。把原图形进行放大或缩小处理。 坐标轴刻度标识指令坐标轴刻度标识指令set的两

109、种调用格式的两种调用格式 格式一(用数值向量标识):格式一(用数值向量标识): set(gca, xtick, xs, ytick, ys)其中,其中, xs和和ys分别为横轴和纵轴刻度标识的标识向量(各分别为横轴和纵轴刻度标识的标识向量(各自必须从小到大依次排列)。自必须从小到大依次排列)。 格式二(用字符串标识):格式二(用字符串标识):set(gca, xticklabel, s1, yticklabel, s2) 其中其中, s1 和和 s2 分别为横轴和纵轴刻度标识的标识分别为横轴和纵轴刻度标识的标识字符串(各个字符串之间用字符串(各个字符串之间用“|”分隔)。分隔)。 4.2 坐标

110、轴控制和图形标识坐标轴控制和图形标识4.2.2 坐标刻度标识坐标刻度标识4.2.2 坐标刻度标识坐标刻度标识 【例【例4.4】 在【例在【例4.3】的结果图形上自定义标识坐标轴刻度。】的结果图形上自定义标识坐标轴刻度。(1)用向量标识坐标轴刻度)用向量标识坐标轴刻度 set(gca,xtick,0,1.4,3.14,5,6.28,ytick,-1.2,0,0.4,1.2) 指令的指令的运行结果。运行结果。4.2.2 坐标刻度标识坐标刻度标识(2)用字符串标识坐标轴刻度)用字符串标识坐标轴刻度 set(gca,xticklabel,0|1.5|half|5|one) 指令执指令执行后的结果。行后

111、的结果。注意:注意:set指令允指令允许单对某一坐标轴许单对某一坐标轴进行刻度标识。进行刻度标识。 网网格格是是在在坐坐标标轴轴刻刻度度标标示示上上画画出出网网格格线线,便便于于对对曲曲线线进进行行观观察察和和分分析析。坐坐标标框框是是使使绘绘制制出出图图形形可可以以在在开开启启形形式式或或封封闭闭形形式式坐坐标标系系中中。MATLAB的的默默认认设设置置是是,不不画画网网格格线线及及选选择择封封闭闭形形式式坐坐标标系系。如如果果用用户户需需要要画画出出网网格格线线或或选选择择开开启形式坐标系,可以使用相关指令(见下页)。启形式坐标系,可以使用相关指令(见下页)。4.2 坐标轴控制和图形标识坐

112、标轴控制和图形标识4.2.3 网格和坐标框网格和坐标框4.2.3 网格和坐标框网格和坐标框grid 是否画网格线的双向切换指令(使是否画网格线的双向切换指令(使 当前网格线状态翻转)当前网格线状态翻转)grid on 画出网格线画出网格线grid off 不画网格线不画网格线box 将坐标形式在封闭和开启之间切换将坐标形式在封闭和开启之间切换 的指令的指令box on 使当前坐标呈封闭形式使当前坐标呈封闭形式box off 使当前坐标呈开启形式使当前坐标呈开启形式 【例【例4.5】 在【例在【例4.4】所得图形上画出网格线并使用开启形式】所得图形上画出网格线并使用开启形式的坐标系。的坐标系。

113、4.2.3 网格和坐标框网格和坐标框 运行运行grid指令后所指令后所得结果。得结果。4.2.3 网格和坐标框网格和坐标框 运行运行box指令后所指令后所得结果。得结果。 MATLAB允许对图形进行文字标识。常用图形标识指令为允许对图形进行文字标识。常用图形标识指令为 title(s) 图形标题图形标题xlabel(s) 横坐标名横坐标名ylabel(s) 纵坐标名纵坐标名text(x,y, s) 在坐标(在坐标(x,y)处标注说明文字)处标注说明文字gtext(s) 用鼠标在特定处标注说明文字用鼠标在特定处标注说明文字其中,其中,s 为字符串。再次提醒:为字符串。再次提醒:作为字符串标记的单

114、引号对作为字符串标记的单引号对“”,必须在英文状态下输入。,必须在英文状态下输入。字符串字符串 s 可以是英文可以是英文字符、希腊文字符和中文字体,也可以是一些特殊字符,并且允许字符、希腊文字符和中文字体,也可以是一些特殊字符,并且允许对标识字体进行设置。输入特定的文字需要用反斜杆(对标识字体进行设置。输入特定的文字需要用反斜杆()开头。)开头。有关图形标识常用的希腊字母和其它特殊字符见表有关图形标识常用的希腊字母和其它特殊字符见表4.5至表至表4.8(p.5152)。)。4.2 坐标轴控制和图形标识坐标轴控制和图形标识4.2.4 图形标识图形标识 4.2.4 图形标识图形标识 【例【例4.5

115、】 在【例在【例4.4】所得图形上进行文字标识。】所得图形上进行文字标识。 运行指令运行指令title(fontsize14正弦函数曲线正弦函数曲线 0rightarrow 2pi)后的结果。后的结果。选择选择14磅字体(正磅字体(正体)。体)。4.2.4 图形标识图形标识 运行指令运行指令xlabel (fontsize12bf时间时间)后后的结果。的结果。选择选择12磅字体磅字体(黑体)。(黑体)。4.2.4 图形标识图形标识 运行指令运行指令ylabel (fontsize12it函数值函数值)后的后的结果。结果。选择选择12磅字体磅字体(斜体一)。(斜体一)。4.2.4 图形标识图形标

116、识 运行指令运行指令text(3.14,sin(3.14),leftarrow 这是这是pi的的函数值函数值)后的结果。后的结果。默认选择默认选择10磅字体磅字体(正体)。(正体)。 标识字符的起标识字符的起始位置在始位置在(3.14,sin(3.14)。4.2.4 图形标识图形标识 运行指令运行指令gtext(leftarrowsin(t)fontname隶书隶书极小值极小值)后的结果。选择后的结果。选择10磅字体(磅字体(隶书隶书)。)。 【说明】【说明】 gtext(s)指令执指令执v 行时,行时,MATLAB v 自动显示待标识自动显示待标识v 的图形,在需要的图形,在需要v 标识处点

117、击鼠标标识处点击鼠标v 的左键即可。的左键即可。 标识字符的起始标识字符的起始位置由用户确定。位置由用户确定。4.2.4 图形标识图形标识 【例【例4.3】 【例【例4.6】的指令及运行结果。】的指令及运行结果。 使用多三元组指令使用多三元组指令plot(X1,Y1,s1,X2,Y2,s2,Xn,Yn,sn)绘绘制多条函数曲线时,需要区分各条曲线,为此制多条函数曲线时,需要区分各条曲线,为此MATLAB提供了提供了图例的注解说明指令,其格式为图例的注解说明指令,其格式为legend(s1, s2, , ps) 该指令在图形窗中开启一个注解视窗,依据绘图的先后顺序,该指令在图形窗中开启一个注解视

118、窗,依据绘图的先后顺序,依次输出字符串对各条曲线进行注解说明。依次输出字符串对各条曲线进行注解说明。s1 是第一条曲是第一条曲线的注解说明,线的注解说明,s2 是第二条曲线的注解说明,是第二条曲线的注解说明,;ps是是参数字符串,确定注解视窗在图形中的位置,其含义见表参数字符串,确定注解视窗在图形中的位置,其含义见表4.9(p.53)。同时,注解视窗也可以用鼠标拖动,以便将其放)。同时,注解视窗也可以用鼠标拖动,以便将其放置在一个合适的位置。置在一个合适的位置。4.2 坐标轴控制和图形标识坐标轴控制和图形标识4.2.5 图例注解图例注解 4.2.5 图例注解图例注解 【例【例4.7】 在同一张

119、图上绘制下列函数曲线:在同一张图上绘制下列函数曲线: 不加图例注解的运行结果。显然,我们不知道各条曲线表示不加图例注解的运行结果。显然,我们不知道各条曲线表示什么函数关系。什么函数关系。 注意第二条指令,它相当于注意第二条指令,它相当于y1=sin(t); y2=sin(9*t);y=y1.*y2;“.” 不能遗漏!为什么?不能遗漏!为什么?4.2.5 图例注解图例注解 4.2.5 图例注解图例注解 运行指令运行指令legend(sin(t) , sin(t)*sin(9t), 1.5*exp(-t)后的后的结果。各条曲线所表示的函数关系一目了然。结果。各条曲线所表示的函数关系一目了然。4.3

120、 图形的控制、表现和双纵坐标图形的控制、表现和双纵坐标第第4章章 数据和函数的可视化数据和函数的可视化4.3.1 多次叠绘多次叠绘 当采用当采用plot指令绘制曲线时,首先将当前图形窗清屏,再绘指令绘制曲线时,首先将当前图形窗清屏,再绘图,所以用户只能看到最后一条图,所以用户只能看到最后一条plot指令绘制的图形。在实指令绘制的图形。在实际应用中,常常会遇到在已经存在的图上再绘制一条或多条际应用中,常常会遇到在已经存在的图上再绘制一条或多条曲线的情况。为此,曲线的情况。为此,MATLAB提供了以下图形保持指令:提供了以下图形保持指令:hold on 保持当前图形及坐标轴系的所有特性保持当前图形

121、及坐标轴系的所有特性hold off 解除解除hold on指令指令hold hold on和和hold off之间之间的双向切换指令的双向切换指令4.3.1 多次叠绘多次叠绘【例例4.8】 在同一张图上分别绘制下列函数曲线:在同一张图上分别绘制下列函数曲线: 【说明】【说明】可以尝试一下,在上述指令可以尝试一下,在上述指令中将中将hold on去掉,会得到什去掉,会得到什么结果。么结果。4.3 图形的控制、表现和双纵坐标图形的控制、表现和双纵坐标4.3.2 图形窗的创建、选择和删除图形窗的创建、选择和删除 当使用绘图指令时,有时候,根据需要可能要绘制若干幅当使用绘图指令时,有时候,根据需要可

122、能要绘制若干幅曲线图,而屏幕上所能看到的只有最近打开的那幅。如果想曲线图,而屏幕上所能看到的只有最近打开的那幅。如果想要看到其它图或者在其它图上重新绘制曲线或者要删除某些要看到其它图或者在其它图上重新绘制曲线或者要删除某些不用的图形窗,则需要下列指令:不用的图形窗,则需要下列指令:figure (m) 创建(或打开)第创建(或打开)第m个图形窗,并将其个图形窗,并将其作为当前图形窗作为当前图形窗clf清除当前图形窗中的内容,以便重新绘清除当前图形窗中的内容,以便重新绘图时不发生混淆图时不发生混淆shg显示当前图形窗(即将当前图形窗放在显示当前图形窗(即将当前图形窗放在最前面)最前面)close

123、 (m)关闭第关闭第m个图形窗个图形窗close all关闭所有图形关闭所有图形窗窗4.3.2 图形窗的创建、选择和删除图形窗的创建、选择和删除 【例【例4.9】 在两张图上分别下列函数曲线:在两张图上分别下列函数曲线:指令的运行。结果图形在下一页。指令的运行。结果图形在下一页。4.3.2 图形窗的创建、选择和删除图形窗的创建、选择和删除 4.3 图形的控制、表现和双纵坐标图形的控制、表现和双纵坐标4.3.3 多子图多子图 MATLAB允许用户在同一个图形窗中布置几幅独立的子图。允许用户在同一个图形窗中布置几幅独立的子图。图形窗的分割指令为:图形窗的分割指令为: subplot(m, n, p

124、) 使使(mn)幅子图的第幅子图的第p幅成为当前图幅成为当前图【说明】【说明】子图的序号编排原则是:子图的序号编排原则是:“先上后下,先左后右先上后下,先左后右”,左上,左上方方 为第为第1幅,向右向下依次排号。该指令产生的子图分割完幅,向右向下依次排号。该指令产生的子图分割完全全 按默认值自动进行。按默认值自动进行。m,n和和p前面的逗号可以省略。前面的逗号可以省略。 subplot指令产生的子图彼此之间独立。指令产生的子图彼此之间独立。MATLAB允许每允许每 个子图都可以以不同的坐标系单独绘图。个子图都可以以不同的坐标系单独绘图。在使用在使用subplot指令之后,如果再想绘制整个图形窗

125、的独幅指令之后,如果再想绘制整个图形窗的独幅v 图,则应先使用图,则应先使用clf指令清图形窗。指令清图形窗。4.3.3 多子图多子图 【例【例4.10】 在同一绘图窗中分别绘制下列函数曲线:在同一绘图窗中分别绘制下列函数曲线: 以下分步显示指令执行结果。以下分步显示指令执行结果。4.3.3 多子图多子图 第一步运行结果第一步运行结果4.3.3 多子图多子图 第二步运行结果第二步运行结果4.3.3 多子图多子图 第三步运行结果第三步运行结果4.3.3 多子图多子图 最终运行结果最终运行结果 显然,显然,subplot指令指令只起定位作用。只起定位作用。4.3 图形的控制、表现和双纵坐标图形的控

126、制、表现和双纵坐标4.3.4 双纵坐标图双纵坐标图 在实际应用中常常会提出这样一种需求:把同一自变量的在实际应用中常常会提出这样一种需求:把同一自变量的两个不同量纲、不同数量级的函数量的变化绘制在同一张图两个不同量纲、不同数量级的函数量的变化绘制在同一张图上。为了满足这种需求,上。为了满足这种需求,MATLAB提供了以下指令提供了以下指令 plotyy(x1,y1,x2,y2) 以左、右不同纵轴绘制以左、右不同纵轴绘制x1y1、 x2y2 两条曲线两条曲线其中,左纵轴用于其中,左纵轴用于x1y1数据对,右纵轴用于数据对,右纵轴用于x2y2数据对。数据对。【例【例4.11】 在同一张图上绘制下列

127、函数曲线:在同一张图上绘制下列函数曲线: 4.3.4 双纵坐标图双纵坐标图 t=0:0.1:10; plotyy(t,sin(t),t,0.01*cos(t); grid plotyy指令分别指令分别用蓝色和绿色曲线用蓝色和绿色曲线表示两个量纲不同表示两个量纲不同的函数关系。的函数关系。4.3.4 双纵坐标图双纵坐标图 【说明】【说明】 如果用如果用plot指令取代指令取代plotyy指令,绘制出的曲线会呈现何种指令,绘制出的曲线会呈现何种 结果?结果? 在在plotyy指令生成的图形中,指令生成的图形中,legend指令不能正常执行。指令不能正常执行。 使用使用text指令指令加注标识文字的

128、位置是根据左纵轴决定的。加注标识文字的位置是根据左纵轴决定的。 title指令和指令和xlabel指令可以正常使用,但指令可以正常使用,但ylabel指令指令仅能标仅能标 注左纵轴。如果希望标注右纵轴的话,则需要使用较复杂注左纵轴。如果希望标注右纵轴的话,则需要使用较复杂 的句柄操作。的句柄操作。 4.4 其他常用的二维绘图指令和从图形其他常用的二维绘图指令和从图形中取数据中取数据 第第4章章 数据和函数的可视化数据和函数的可视化 MATLAB提供了其他多种二维图形的绘制指令,如表提供了其他多种二维图形的绘制指令,如表4.10(p.57)所示。这些指令或者是以)所示。这些指令或者是以plot指

129、令为基础而形指令为基础而形成的,或者使用场合较少。可以使用成的,或者使用场合较少。可以使用help指令指令详细了解它们详细了解它们的使用方法。的使用方法。 4.4 其他常用的二维绘图指令和其他常用的二维绘图指令和从图形中取数据从图形中取数据 4.4.1 对数坐标图形对数坐标图形 绘制对数坐标图形的指令为绘制对数坐标图形的指令为 semilogx(x,y, s) 绘制半对数坐标图形,横轴取以绘制半对数坐标图形,横轴取以10 为底的对数坐标,纵轴为线性坐标为底的对数坐标,纵轴为线性坐标 semilogy(x,y, s) 绘制半对数坐标图形,纵轴取以绘制半对数坐标图形,纵轴取以10 为底的对数坐标,

130、横轴为线性坐标为底的对数坐标,横轴为线性坐标 loglog(x,y, s) 绘制横、纵轴都取以绘制横、纵轴都取以10为底的对数为底的对数 坐标图形坐标图形其中,字符串其中,字符串 s 的含义与的含义与plot指令中的相同。指令中的相同。4.4.1 对数坐标图形对数坐标图形 【例【例4.11】 绘制对数坐标图形的示例。绘制对数坐标图形的示例。 指令运行。指令运行。 结果见下页。结果见下页。4.4.1 对数坐标图形对数坐标图形 4.4 其他常用的二维绘图指令和其他常用的二维绘图指令和从图形中取数据从图形中取数据 4.4.2 极坐标图形极坐标图形 绘制极坐标图形的指令为绘制极坐标图形的指令为pola

131、r(theta,radius, s) 相角为相角为theta,半径为,半径为 radius的极坐标图形的极坐标图形其中,字符串其中,字符串 s 的含义与的含义与plot指令中的相同。指令中的相同。4.4.2 极坐标图形极坐标图形 【例【例4.13】 绘制绘制极坐标图形的示例。极坐标图形的示例。 4.4 其他常用的二维绘图指令和其他常用的二维绘图指令和从图形中取数据从图形中取数据 4.4.3 其他常用的二维绘图指令简介其他常用的二维绘图指令简介 【例【例4.14】 在同一张图上绘制在同一张图上绘制 经采样开经采样开关采样后产生的离散信号及通过零阶保持器后产生的波形。关采样后产生的离散信号及通过零

132、阶保持器后产生的波形。4.4.3 其他常用的二维绘图指令简介其他常用的二维绘图指令简介 4.4 其他常用的二维绘图指令和其他常用的二维绘图指令和从图形中取数据从图形中取数据 4.4.4 获取二维图形数据的指令获取二维图形数据的指令ginput MATLAB还提供了从二维图形中获取数据的指令还提供了从二维图形中获取数据的指令ginput。该指令在数值优化、方程求解以及工程设计中十分有用。该该指令在数值优化、方程求解以及工程设计中十分有用。该指令的格式为指令的格式为x,y=ginput(n) 用鼠标从二维图形上获取用鼠标从二维图形上获取n个点个点 的数据坐标(的数据坐标(x, y)4.4.4 获取

133、二维图形数据的指令获取二维图形数据的指令ginput 【说明】【说明】 该指令仅适用于二维图形。指令中的该指令仅适用于二维图形。指令中的n应赋正整数,它是用应赋正整数,它是用 户希望通过鼠标从图上获得的数据点的个数。指令中的户希望通过鼠标从图上获得的数据点的个数。指令中的x, y存放所取点坐标的横坐标和纵坐标数组。存放所取点坐标的横坐标和纵坐标数组。 该指令具体操作方法:该指令运行后,会把当前图形从后该指令具体操作方法:该指令运行后,会把当前图形从后 台调到前台,同时鼠标光标变化为十字叉;用户移动鼠台调到前台,同时鼠标光标变化为十字叉;用户移动鼠 标,使十字叉移到待取坐标点;点动鼠标左键,便获

134、得该标,使十字叉移到待取坐标点;点动鼠标左键,便获得该 点数据;此后,用同样的方法,获取其余点的数据;当点数据;此后,用同样的方法,获取其余点的数据;当n个个 点的数据全部取到后,图形窗便退回到后台,机器回到点的数据全部取到后,图形窗便退回到后台,机器回到 ginput指令执行前的环境。指令执行前的环境。 在使用该指令之前,通常先使用在使用该指令之前,通常先使用 axis指令对图形进行局部指令对图形进行局部 放大处理。放大处理。4.4.4 获取二维图形数据的指令获取二维图形数据的指令ginput 【例【例4.15】 采用图解法求方程采用图解法求方程 的解。的解。(1)绘制函数)绘制函数 的曲线

135、的曲线 原题相当于求函数原题相当于求函数 时的坐标点(时的坐标点(x,0)。)。4.4.4 获取二维图形数据的指令获取二维图形数据的指令ginput 从图中可以看出,从图中可以看出,函数零点的位置函数零点的位置应在区间应在区间0.5,1中。中。4.4.4 获取二维图形数据的指令获取二维图形数据的指令ginput (2)在曲线与坐标横轴()在曲线与坐标横轴(y=0)的交点附近局部放大图上求解)的交点附近局部放大图上求解 键入指令键入指令axis(0.5,1,-0.3,0.3)后所得局部放后所得局部放大图。零点位置应在大图。零点位置应在区间区间0.65,0.7中。中。4.4.4 获取二维图形数据的

136、指令获取二维图形数据的指令ginput 键入指令键入指令axis(0.65,0.7,-0.1,0.1)后所得局部放大图。零后所得局部放大图。零点位置应在区间点位置应在区间0.69,0.7中。中。4.4.4 获取二维图形数据的指令获取二维图形数据的指令ginput 如上进行。经过多如上进行。经过多次局部放大后,可次局部放大后,可知知零点位置应在区零点位置应在区间间0.698,0.699中。中。 键入指令键入指令axis(0.698,0.699,-0.001,0.001)后所得后所得局部放大图。局部放大图。4.4.4 获取二维图形数据的指令获取二维图形数据的指令ginput 键入指令键入指令x,y

137、=ginput(1);format long; x, y移动鼠标,使十字叉移到函数曲线与坐标横轴(移动鼠标,使十字叉移到函数曲线与坐标横轴(y=0)的交)的交点;点动鼠标左键,便获得该点数据。点;点动鼠标左键,便获得该点数据。4.4.4 获取二维图形数据的指令获取二维图形数据的指令ginput 解题完整过程和最终结解题完整过程和最终结果(每次抓到的坐标点位果(每次抓到的坐标点位置不尽相同)。置不尽相同)。 注意:注意:所得结果的精度所得结果的精度完全由完全由点动鼠标左键时的点动鼠标左键时的位置决定。因此,应当尽位置决定。因此,应当尽可能点准函数曲线的零点可能点准函数曲线的零点位置。位置。4.4

138、.4 获取二维图形数据的指令获取二维图形数据的指令ginput 采用这种方法求方程的解时,为了得到较高的图解精度,采用这种方法求方程的解时,为了得到较高的图解精度,可以先绘制一个初略的函数曲线图。在获得函数零点的初略可以先绘制一个初略的函数曲线图。在获得函数零点的初略位置后,应当将该点附近的位置后,应当将该点附近的自变量采样点密度自变量采样点密度加大,以得到加大,以得到更清晰的局部函数曲线。更清晰的局部函数曲线。 4.5 三维绘图指令简介三维绘图指令简介第第4章章 数据和函数的可视化数据和函数的可视化 三维图形包括三维曲线图和三维曲面图。三维曲线图由指三维图形包括三维曲线图和三维曲面图。三维曲

139、线图由指令令plot3实现,三维曲面图由指令实现,三维曲面图由指令mesh和和surf实现。实现。 4.5 三维绘图指令简介三维绘图指令简介4.5.1 三维曲线绘制指令三维曲线绘制指令plot3 plot3指令用于绘制三维曲线,基本调用格式为指令用于绘制三维曲线,基本调用格式为 plot3(x,y,z,s) 用用s指定的点型线型色彩指定的点型线型色彩 绘制三维曲线绘制三维曲线其中,字符串其中,字符串 s 的含义与的含义与plot指令中的相同。指令中的相同。 输入宗量输入宗量(x,y,z,s)称为三维绘线的四元组。它们分别指称为三维绘线的四元组。它们分别指定三维曲线的几何位置、线型、点形和色彩。

140、它的使用方定三维曲线的几何位置、线型、点形和色彩。它的使用方法以及输入宗量法以及输入宗量(x,y,z,s)含义和衍生格式与二维图形绘含义和衍生格式与二维图形绘制指令制指令plot类似。类似。4.5.1 三维曲线绘制指令三维曲线绘制指令plot3 【例【例4.16】 利用指令利用指令plot3绘制三维螺旋线。绘制三维螺旋线。 【说明】【说明】 使用使用plot3指令后,仍可以像指令后,仍可以像 前面前面一样,对图形进行标识和控制。一样,对图形进行标识和控制。 4.5 三维绘图指令简介三维绘图指令简介4.5.2 三维曲面图绘制指令三维曲面图绘制指令mesh和和surf mesh指令用于绘制某一区域

141、内的完整网格曲面,指令用于绘制某一区域内的完整网格曲面,surf指指令可以绘制出三维曲面图。基本调用格式为令可以绘制出三维曲面图。基本调用格式为 mesh(x,y,z) / surf(x,y,z) 绘制出一个网格图(曲面绘制出一个网格图(曲面 图),图像的颜色由高度图),图像的颜色由高度 宗量宗量z确定确定 4.5.2 三维曲面图绘制指令三维曲面图绘制指令mesh和和surf【例【例4.17】 绘制抛物线曲面绘制抛物线曲面 在在区域中的图像。区域中的图像。4.5.2 三维曲面图绘制指令三维曲面图绘制指令mesh和和surf 【说明】【说明】 在绘制三维曲面时,使用在绘制三维曲面时,使用meshgrid指令经常能够得到很多的方指令经常能够得到很多的方面。该指令用于生成面。该指令用于生成X和和Y数组,其基本调用格式为数组,其基本调用格式为 X, Y= meshgrid(x, y) 将用将用x和和y指定的区域转化为指定的区域转化为 数组数组X和和Y,X的行是的行是x的复制,的复制, Y的行是的行是y的复制的复制 本例代码可以简化为本例代码可以简化为 clear X, Y= meshgrid(-1:0.1:1); Z =X.2+Y.2; subplot(1,2,1), mesh(X, Y, Z); subplot(1,2,2), surf(X, Y, Z);

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号