·18· MATLAB基础及其应用教程 续表 命令 示 例 说明 mkdir mkdir xt mat 在当前文件夹下建立一子文件夹 dir dir 显示当前或指定目录下的文件或子目录清单 what what 显示当前日录下M、MAT、MEX这3类文件清单 which which inv.m 寻求某个文件所在的文件夹 type type xt06.m 显示某个文件的内容或注释 delete delete xt01.m 删除文件和图形对象 表1-10帮助命令 命 令 杀 例 说明 help help mkdir 提供MATLAB命令、函数和M文件的使用和帮助信息 根据用户提供的关键字去查找相关函数的信息,常用来查找具有某种功 lookfor lookfor Z 能而不知道准确名字的命令 helpwin helpwin graphics 打开帮助窗口显示指定的主题信息 1.9小 结 MATLAB是一个功能多样的、高度集成的、适合科学和工程计算的软件,但同时它又 是一种高级程序设计语言。 MATLAB的主界面集成了命令窗口、历史命令窗口、当前目录窗口、工作空间窗口和 帮助窗口等5个窗口。它们既可单独使用,又可相互配合,为用户提供了十分灵活方便的 操作环境。 对MATLAB各窗口的某项设置操作通常都有两条途径:一条是用MATLAB相关窗口 的对话框或菜单(包括快捷菜单):另一条是在命令窗口执行某一命令。前者的优点是方便 用户与MATLAB的交互,而后者主要是考虑到程序设计的需要和方便。 1.10习 题 1.单项选择题 (1)可以用命令或是菜单清除命令窗口中的内容。若用命令,则这个命令是()。 A.clear B.clc C.clf D.cls (2)启动MATLAB程序后,结果不见工作空间窗口出现,其最有可能的原因是()。 A.程序出了问题 B.桌面菜单中“workspace”菜单项未选中 C.其他窗口打开太多 D.其他窗口未打开 18·
·18· MATLAB 基础及其应用教程 ·18· 续表 命 令 示 例 说 明 mkdir mkdir xt_mat 在当前文件夹下建立一子文件夹 dir dir 显示当前或指定目录下的文件或子目录清单 what what 显示当前目录下 M、MAT、MEX 这 3 类文件清单 which which inv.m 寻求某个文件所在的文件夹 type type xt06.m 显示某个文件的内容或注释 delete delete xt01.m 删除文件和图形对象 表 1-10 帮助命令 命 令 示 例 说 明 help help mkdir 提供 MATLAB 命令、函数和 M 文件的使用和帮助信息 lookfor lookfor Z 根据用户提供的关键字去查找相关函数的信息,常用来查找具有某种功 能而不知道准确名字的命令 helpwin helpwin graphics 打开帮助窗口显示指定的主题信息 1.9 小 结 MATLAB 是一个功能多样的、高度集成的、适合科学和工程计算的软件,但同时它又 是一种高级程序设计语言。 MATLAB 的主界面集成了命令窗口、历史命令窗口、当前目录窗口、工作空间窗口和 帮助窗口等 5 个窗口。它们既可单独使用,又可相互配合,为用户提供了十分灵活方便的 操作环境。 对 MATLAB 各窗口的某项设置操作通常都有两条途径:一条是用 MATLAB 相关窗口 的对话框或菜单(包括快捷菜单);另一条是在命令窗口执行某一命令。前者的优点是方便 用户与 MATLAB 的交互,而后者主要是考虑到程序设计的需要和方便。 1.10 习 题 1. 单项选择题 (1) 可以用命令或是菜单清除命令窗口中的内容。若用命令,则这个命令是( )。 A. clear B. clc C. clf D. cls (2) 启动 MATLAB 程序后,结果不见工作空间窗口出现,其最有可能的原因是( )。 A. 程序出了问题 B. 桌面菜单中“workspace”菜单项未选中 C. 其他窗口打开太多 D. 其他窗口未打开
第1章TLAB简介 ·19。 (3)在一个矩阵的行与行之间需用某个符号分隔,这个符号可以是()。 A.句号 B.减号 C.逗号 D.回车 2.多项选择题 (I)在MATLAB语言中,逗号会在多种场合中用到,但代表的含义有所不同,下列哪 些是它能起的作用()。 A.分隔希望显示执行结果的命令B.实现转置共轭 C.分隔矩阵中同一行的各元素 D.分隔输入变量 E.用作矩阵行与行之间的分隔符 (2)分号在MATLAB语言中经常会被用到,但代表的含义有所不同,下列哪些是它能 起的作用()。 A.分隔希望显示执行结果的命令 B.用在不希望显示执行结果的命令结尾 C.分隔不希望显示执行结果的命令 D.用作矩阵行与行之间的分隔符 E.MATLAB语句书写格式的要求 (3)工具箱是MATLAB解决专门领域问题的特殊程序集,它有多达数十个工具箱,常 用的工具箱有()。 A.自动控制 B.信号处理 C.图像处理 D.通信仿真 E.小波变换 F.最优化问题 (4)历史命令窗口能够实现的功能有( A.记录并显示已经运行过的命令 B.可以把该窗口中的命令复制到命令窗口中 C.可以把该窗口中的命令选中后,用快捷菜单构造M文件 D.可以把该窗口中的命令选中后,用快捷菜单去执行 3.填空题 (I)MATLAB是目前国际上最流行、应用最广泛的 软件。 (2)MATLAB动态仿真功能是由 工具箱提供的(用英文)。 (3)启动MATLAB程序后,在默认设置下,MATLAB会同时打开4个窗口,它们分 别是 、Command History、Workspace和Current Directory。 ·19·
第 1 章 MATLAB 简介 ·19· ·19· (3) 在一个矩阵的行与行之间需用某个符号分隔,这个符号可以是( )。 A. 句号 B. 减号 C. 逗号 D. 回车 2. 多项选择题 (1) 在 MATLAB 语言中,逗号会在多种场合中用到,但代表的含义有所不同,下列哪 些是它能起的作用( )。 A. 分隔希望显示执行结果的命令 B. 实现转置共轭 C. 分隔矩阵中同一行的各元素 D. 分隔输入变量 E. 用作矩阵行与行之间的分隔符 (2) 分号在 MATLAB 语言中经常会被用到,但代表的含义有所不同,下列哪些是它能 起的作用( )。 A. 分隔希望显示执行结果的命令 B. 用在不希望显示执行结果的命令结尾 C. 分隔不希望显示执行结果的命令 D. 用作矩阵行与行之间的分隔符 E. MATLAB 语句书写格式的要求 (3) 工具箱是 MATLAB 解决专门领域问题的特殊程序集,它有多达数十个工具箱,常 用的工具箱有( )。 A. 自动控制 B. 信号处理 C. 图像处理 D. 通信仿真 E. 小波变换 F. 最优化问题 (4) 历史命令窗口能够实现的功能有( )。 A. 记录并显示已经运行过的命令 B. 可以把该窗口中的命令复制到命令窗口中 C. 可以把该窗口中的命令选中后,用快捷菜单构造 M 文件 D. 可以把该窗口中的命令选中后,用快捷菜单去执行 3. 填空题 (1) MATLAB 是目前国际上最流行、应用最广泛的__________软件。 (2) MATLAB 动态仿真功能是由__________工具箱提供的(用英文)。 (3) 启动 MATLAB 程序后,在默认设置下,MATLAB 会同时打开 4 个窗口,它们分 别是__________、Command History、Workspace 和 Current Directory
第2章 MATLAB语言基础 教学提示:数组是一种在高级语言中被广泛使用的构造型数据结构。但与一般高级语 言不同,在MATLAB中数组可作为一个独立的运算单位,直接进行类似简单变量的多种 运算而无需采用循环结构,由此决定了数组在MATLAB中作为基本运算量的角色定位。 数组有一维、二维和多维之分,在MATLAB中,它们有类似于简单变量的、统一的运算 符号和运算函数。当一维数组按向量的规则实施运算时,它便是向量;二维数组按矩阵的 运算规则实施运算时,它便是矩阵。数组及矩阵的基本运算构成了整个MATLAB的语言 基础。 教学要求:了解MATLAB的数据类型,理解向量、矩阵、数组、函数和表达式等基 本概念,掌握向量、矩阵和数组的基本运算法则和运算函数的使用。 2.1基本概念 数据类型、常量与变量是程序语言入门时必须引入的一些基本概念,MATLAB虽是一 个集多种功能于一体的集成软件,但就其语言部分而言,这些概念同样不可缺少。本节除 了引入这些概念之外,还将对诸如向量、矩阵、数组、运算符、函数和表达式等一些更专 门的概念给出描述和说明。 2.1.1 MATLAB数据类型 数据作为计算机处理的对象,在程序语言中可分为多种类型,MATLAB作为一种可编 程的语言当然也不例外。MATLAB的主要数据类型如图2.1所示。 MATLAB数值型数据划分成整型和浮点型的用意和C语言有所不同。MATLAB的整 型数据主要为图像处理等特殊的应用问题提供数据类型,以便节省空间或提高运行速度。 对一般数值运算,绝大多数情况是采用双精度浮点型的数据。 MATLAB的构造型数据基本上与C+的构造型数据相衔接,但它的数组却有更加广泛 的含义和不同于一般语言的运算方法。 符号对象是MATLAB所特有的一类为符号运算而设置的数据类型。严格地说,它不 是某一类型的数据,它可以是数组、矩阵、字符等多种形式及其组合,但它在MATLAB 的工作空间中的确又是另立的一种数据类型。 MATLAB数据类型在使用中有一个突出的特点,即对不同数据类型的变量在程序中被 引用时,一般不用事先对变量的数据类型进行定义或说明,系统会依据变量被赋值的类型 自动进行类型识别,这在高级语言中是极有特色的。这样处理的好处是,在书写程序时可 以随时引入新的变量而不用担心会出什么问题,这的确给应用带来了很大方便。但缺点是
第 2 章 MATLAB 语言基础 教学提示:数组是一种在高级语言中被广泛使用的构造型数据结构。但与一般高级语 言不同,在 MATLAB 中数组可作为一个独立的运算单位,直接进行类似简单变量的多种 运算而无需采用循环结构,由此决定了数组在 MATLAB 中作为基本运算量的角色定位。 数组有一维、二维和多维之分,在 MATLAB 中,它们有类似于简单变量的、统一的运算 符号和运算函数。当一维数组按向量的规则实施运算时,它便是向量;二维数组按矩阵的 运算规则实施运算时,它便是矩阵。数组及矩阵的基本运算构成了整个 MATLAB 的语言 基础。 教学要求:了解 MATLAB 的数据类型,理解向量、矩阵、数组、函数和表达式等基 本概念,掌握向量、矩阵和数组的基本运算法则和运算函数的使用。 2.1 基 本 概 念 数据类型、常量与变量是程序语言入门时必须引入的一些基本概念,MATLAB 虽是一 个集多种功能于一体的集成软件,但就其语言部分而言,这些概念同样不可缺少。本节除 了引入这些概念之外,还将对诸如向量、矩阵、数组、运算符、函数和表达式等一些更专 门的概念给出描述和说明。 2.1.1 MATLAB 数据类型 数据作为计算机处理的对象,在程序语言中可分为多种类型,MATLAB 作为一种可编 程的语言当然也不例外。MATLAB 的主要数据类型如图 2.1 所示。 MATLAB 数值型数据划分成整型和浮点型的用意和 C 语言有所不同。MATLAB 的整 型数据主要为图像处理等特殊的应用问题提供数据类型,以便节省空间或提高运行速度。 对一般数值运算,绝大多数情况是采用双精度浮点型的数据。 MATLAB 的构造型数据基本上与 C++的构造型数据相衔接,但它的数组却有更加广泛 的含义和不同于一般语言的运算方法。 符号对象是 MATLAB 所特有的一类为符号运算而设置的数据类型。严格地说,它不 是某一类型的数据,它可以是数组、矩阵、字符等多种形式及其组合,但它在 MATLAB 的工作空间中的确又是另立的一种数据类型。 MATLAB 数据类型在使用中有一个突出的特点,即对不同数据类型的变量在程序中被 引用时,一般不用事先对变量的数据类型进行定义或说明,系统会依据变量被赋值的类型 自动进行类型识别,这在高级语言中是极有特色的。这样处理的好处是,在书写程序时可 以随时引入新的变量而不用担心会出什么问题,这的确给应用带来了很大方便。但缺点是
第2章MATLAB语言基础 ·21· uint8 uint16 无符号 uint32 uint64 整型 int8 int16 有符号 数值型 int32 int64 ,单精度 基本型 、浮点型 双精度 字符串型 数据类型 数组型 细胞型 构造型 结构型 类类型 符号对象 图2.1 MATLAB的主要数据类型 有失严谨,会给搜索和确定一个符号是否为变量名带来更多的时间开销。在1.7.1节中曾经 指出过这一问题。 2.1.2常量与变量 常量是程序语句中取不变值的哪些量,如表达式y=0.618*x,其中就包含一个0.618这 样的数值常数,它便是一数值常量。而另一表达式s=Tomorrow and Tomorrow'中,单引号 内的英文字符串“Tomorrow and Tomorrow”则是一字符串常量。 在MATLAB中,有一类常量是由系统默认给定一个符号来表示的,例如pi,它代表 圆周率π这个常数,即3.1415926…,类似于C语言中的符号常量,这些常量如表2-1所列, 有时又称为系统预定义的变量。 变量是在程序运行中其值可以改变的量,变量由变量名来表示。在MATLAB中变量 名的命名有自己的规则,可以归纳成如下几条: (1)变量名必须以字母开头,且只能由字母、数字或者下画线3类符号组成,不能含 有空格和标点符号(如(),。%)等。 ·21·
第 2 章 MATLAB 语言基础 ·21· ·21· 数据类型 基本型 数值型 字符串型 整 型 浮点型 有符号 int8 int16 int32 int64 单精度 双精度 构造型 符号对象 细胞型 结构型 类类型 uint64 数组型 无符号 uint16 uint32 uint8 图 2.1 MATLAB 的主要数据类型 有失严谨,会给搜索和确定一个符号是否为变量名带来更多的时间开销。在 1.7.1 节中曾经 指出过这一问题。 2.1.2 常量与变量 常量是程序语句中取不变值的哪些量,如表达式 y=0.618*x,其中就包含一个 0.618 这 样的数值常数,它便是一数值常量。而另一表达式 s='Tomorrow and Tomorrow'中,单引号 内的英文字符串“Tomorrow and Tomorrow”则是一字符串常量。 在 MATLAB 中,有一类常量是由系统默认给定一个符号来表示的,例如 pi,它代表 圆周率 π 这个常数,即 3.1415926…,类似于 C 语言中的符号常量,这些常量如表 2-1 所列, 有时又称为系统预定义的变量。 变量是在程序运行中其值可以改变的量,变量由变量名来表示。在 MATLAB 中变量 名的命名有自己的规则,可以归纳成如下几条: (1) 变量名必须以字母开头,且只能由字母、数字或者下画线 3 类符号组成,不能含 有空格和标点符号(如( ),。% ’)等
·22· MATLAB基础及其应用教程 表2-1 MATLAB特殊常量表 常量符号 常量含义 i或j 虚数单位,定义为2=子=-1 lnf或inf 正无穷大,由零做除数引入此常量 NaN 不定式,表示非数值量,产生于0/0,∞/∞,0*∞等运算 i 圆周率π的双精度表示 容差变量,当某量的绝对值小于ps时,可认为此量为零,即为浮点数的最小 eps 分辨率,PC上此值为22 Realmin或realmin 最小浮点数,2102 Realmax或realmax 最大浮点数,2023 (2)变量名区分字母的大小写。例如,“a”和“A”是不同的变量。 (3)变量名不能超过63个字符,第63个字符后的字符被忽略,对于MATLAB6.5版 以前的变量名不能超过31个字符。 (4)关键字(如if、while等)不能作为变量名。 (⑤)最好不要用表2-1中的特殊常量符号作变量名。 常见的错误命名如fx,y,y,A2等。 2.1.3标量、向量、矩阵与数组 标量、向量、矩阵和数组是MATLAB运算中涉及的一组基本运算量。它们各自的特 点及相互间的关系可以描述如下: ()数组不是一个数学量,而是一个用于高级语言程序设计的概念。如果数组元素按 “维线性方式组织在一起,那么称其为一维数组,一维数组的数学原型是向量。如果数组 元素分行、列排成一个二维平面表格,那么称其为二维数组,二维数组的数学原型是矩阵。 如果元素在排成二维数组的基础上,再将多个行、列数分别相同的二维数组叠成一本立体 表格,便形成三维数组。依此类推下去,便有了多维数组的概念。在MATLAB中,数组 的用法与一般高级语言不同,它不借助于循环,而是直接采用运算符,有自己独立的运算 符和运算法则,2.1.5节和2.4节将有专门讨论。 (2)矩阵是一个数学概念,一般高级语言并未引入将其作为基本的运算量,但MATLAB 是个例外。一般高级语言是不认可将两个矩阵视为两个简单变量而直接进行加减乘除的, 要完成矩阵的四则运算必须借助于循环结构。当MATLAB将矩阵引入作为基本运算量后, 上述局面改变了。MATLAB不仅实现了矩阵的简单加减乘除运算,而且许多与矩阵相关的 其他运算也因此大大简化了。 (3)向量是一个数学量,一般高级语言中也未引入,它可视为矩阵的特例。从MATLAB 的工作空间窗口可以查看到:一个n维的行向量是一个1×n阶的矩阵,而列向量则当成n×1 阶的矩阵。 (4)标量的提法也是一个数学概念,但在MATLAB中,一方面可将其视为一般高级语 言的简单变量来处理,另一方面又可把它当成1×1阶的矩阵,这一看法与矩阵作为 ·22…
·22· MATLAB 基础及其应用教程 ·22· 表 2-1 MATLAB 特殊常量表 常量符号 常量含义 i 或 j 虚数单位,定义为 2 2 ij 1 = = − Inf 或 inf 正无穷大,由零做除数引入此常量 NaN 不定式,表示非数值量,产生于 0/0,∞ /∞ ,0*∞ 等运算 pi 圆周率 π 的双精度表示 eps 容差变量,当某量的绝对值小于 eps 时,可认为此量为零,即为浮点数的最小 分辨率,PC 上此值为 2 -52 Realmin 或 realmin 最小浮点数,2 -1022 Realmax 或 realmax 最大浮点数,21023 (2) 变量名区分字母的大小写。例如,“a”和“A”是不同的变量。 (3) 变量名不能超过 63 个字符,第 63 个字符后的字符被忽略,对于 MATLAB 6.5 版 以前的变量名不能超过 31 个字符。 (4) 关键字(如 if、while 等)不能作为变量名。 (5) 最好不要用表 2-1 中的特殊常量符号作变量名。 常见的错误命名如 f(x),y',y'',A2 等。 2.1.3 标量、向量、矩阵与数组 标量、向量、矩阵和数组是 MATLAB 运算中涉及的一组基本运算量。它们各自的特 点及相互间的关系可以描述如下: (1) 数组不是一个数学量,而是一个用于高级语言程序设计的概念。如果数组元素按 一维线性方式组织在一起,那么称其为一维数组,一维数组的数学原型是向量。如果数组 元素分行、列排成一个二维平面表格,那么称其为二维数组,二维数组的数学原型是矩阵。 如果元素在排成二维数组的基础上,再将多个行、列数分别相同的二维数组叠成一本立体 表格,便形成三维数组。依此类推下去,便有了多维数组的概念。在 MATLAB 中,数组 的用法与一般高级语言不同,它不借助于循环,而是直接采用运算符,有自己独立的运算 符和运算法则,2.1.5 节和 2.4 节将有专门讨论。 (2) 矩阵是一个数学概念,一般高级语言并未引入将其作为基本的运算量,但 MATLAB 是个例外。一般高级语言是不认可将两个矩阵视为两个简单变量而直接进行加减乘除的, 要完成矩阵的四则运算必须借助于循环结构。当 MATLAB 将矩阵引入作为基本运算量后, 上述局面改变了。MATLAB 不仅实现了矩阵的简单加减乘除运算,而且许多与矩阵相关的 其他运算也因此大大简化了。 (3) 向量是一个数学量,一般高级语言中也未引入,它可视为矩阵的特例。从 MATLAB 的工作空间窗口可以查看到:一个 n 维的行向量是一个 1×n 阶的矩阵,而列向量则当成 n×1 阶的矩阵。 (4) 标量的提法也是一个数学概念,但在 MATLAB 中,一方面可将其视为一般高级语 言的简单变量来处理,另一方面又可把它当成 1×1 阶的矩阵,这一看法与矩阵作为