附录一 MATLAB软件简介 MATLAB语言是美国 Mathworks公司研制开发的大型计算软件,自1985年问世 以来,特别是1993年4. x Windows版本的出现,使得 MATLAB语言的使用获得了巨 大的发展。它的强大的矩阵处理与运算功能、丰富的图形绘制能力深受用户的青睐 控制领域的研究者与工程技术人员对此给予了极大关注,国际上众多的知名学者在 此基础上先后开发出一系列的相关工具箱( toolbox),如控制系统工具箱( Control System Toolbox)、神经网络工具箱( Neural Network Toolbox)、系统辨识工具箱 ( Systerm Identification Toolbox)、最优化工具箱( Optimization Toolbox)、鲁 棒控制工具箱( Robust control toolbox)等,以及集成在 MATLAB上的面向结构图的 系统分析平台 Simulink。从而使得 MATLAB的功能得到了全面提高,几乎覆盖了控制 领域各个硏究分支,成为国际控制领域最为重要与流行的对控制系统进行分析研究 的软件工具。本节将简要介绍一些 MATLAB的最基本知识,为没有接触过 MATLAN语 言的控制领域的人员提供一定的基础知识。对于更加详细的内容请读者参阅相关的 文献书籍与在线帮助。值得说明的是在本书前面各章节中提到的 MATLAB是广义上的 MATLAB含义,它将包括相关的工具箱等方面的知识与内容 1变量与附表达式 在 MATLAB中变量名与C语言一样,要求以字母开头的字符串可以是字母、数字 或下画线。例如, namestring, string_12等都是合法的变量名。变量名的长度以 不超过25个字符为限。在 MATLAB中对变量名是区分大小写字母的,即同一个字母 不同的大小写代附表着不同的变量。当用户在 MATLAB工作空间输入一个新变量后, MATLAB将自动分配给该变量相应的内存,不需要在输入变量时加以声明。变量是 MATLAB的基本运算单元,是其进行运算和编写程序的基础,由变量构成的基本语句 就是赋值语句,其典型格式为 变量名=附表达式 下述示例给出了最简单的赋值语句,在 MATLAB的命令窗口中输入 则定义了一个变量name_1,并实现了对它的赋值,这可以通过在命令窗口上键入该 变量名来检査变量是否已经被定义和赋值。得到结果为 上例证实了变量name_1已经建立并且已被赋值。在 MATLAB的变量中有一类变
206 附录一 MATLAB 软件简介 MATLAB 语言是美国 Mathworks 公司研制开发的大型计算软件,自 1985 年问世 以来,特别是 1993 年 4.x Windows 版本的出现,使得 MATLAB 语言的使用获得了巨 大的发展。它的强大的矩阵处理与运算功能、丰富的图形绘制能力深受用户的青睐。 控制领域的研究者与工程技术人员对此给予了极大关注,国际上众多的知名学者在 此基础上先后开发出一系列的相关工具箱(toolbox),如控制系统工具箱(Control System Toolbox)、神经网络工具箱(Neural Network Toolbox)、系统辨识工具箱 (Systerm Identification Toolbox)、最优化工具箱(Optimization Toolbox)、鲁 棒控制工具箱(Robust Control Toolbox)等,以及集成在 MATLAB 上的面向结构图的 系统分析平台 Simulink。从而使得 MATLAB 的功能得到了全面提高,几乎覆盖了控制 领域各个研究分支,成为国际控制领域最为重要与流行的对控制系统进行分析研究 的软件工具。本节将简要介绍一些 MATLAB 的最基本知识,为没有接触过 MATLAN 语 言的控制领域的人员提供一定的基础知识。对于更加详细的内容请读者参阅相关的 文献书籍与在线帮助。值得说明的是在本书前面各章节中提到的 MATLAB 是广义上的 MATLAB 含义,它将包括相关的工具箱等方面的知识与内容。 1 变量与附表达式 在 MATLAB 中变量名与 C 语言一样,要求以字母开头的字符串可以是字母、数字 或下画线。例如, namestring, string_12 等都是合法的变量名。变量名的长度以 不超过 25 个字符为限。在 MATLAB 中对变量名是区分大小写字母的,即同一个字母 不同的大小写代附表着不同的变量。当用户在 MATLAB 工作空间输入一个新变量后, MATLAB 将自动分配给该变量相应的内存,不需要在输入变量时加以声明。变量是 MATLAB 的基本运算单元,是其进行运算和编写程序的基础,由变量构成的基本语句 就是赋值语句,其典型格式为 变量名=附表达式 下述示例给出了最简单的赋值语句,在 MATLAB 的命令窗口中输入 name_1= 4 则定义了一个变量 name_1,并实现了对它的赋值,这可以通过在命令窗口上键入该 变量名来检查变量是否已经被定义和赋值。得到结果为 name_1= 4 上例证实了变量 name_1 已经建立并且已被赋值。在 MATLAB 的变量中有一类变
量允许作用在多个函数中,这类变量就是全局变量。对于全局变量是需要声明的, 即在该变量名前冠以关键宇“ global”,如在命令窗口键入 global HE 则这样H就变成了全局变量 如果需要求解一个附表达式并将运算结果存于某一变量,可由下述语句实现 A=3*16+10-27/3 运行上述语句可得到 若直接输入附表达式,而没有将运算结果赋值给变量, MATLAB将自动将结果存 于内部 “ans”中并加以显示,例如输入 3*16+10-27/3 运行得到 ans 如果在表达式的最后应用“;’结束,虽然不会影响对变量赋值的结果,但运算 结果将不在屏幕上显示 另外 MATLAB自身具有一些内部常数或准内部变量(函数),允许用户直接加以使 用,如附表1-1所示 附表1-1内部常数与变量 「内部常数(函数)名 功能 内部常数(函数)名 flops 「计算浮点 虚数单位 圆周率 dat 日期 无穷大 tic, toc 时间间隔 nan 不定值 etime 时间间隔 2基本运算符 MATLAB语言具有强大的运算功能,它能够为用户提供所需计算的各种算术与逻 辑运算。附表1一2给出了 MATLAB的主要算术与逻辑关系运算符及其相应的功能解 释 附表1-2算术与逻辑运算符 匚运算符功能解释运算符功能解释
207 量允许作用在多个函数中,这类变量就是全局变量。对于全局变量是需要声明的, 即在该变量名前冠以关键宇“global”,如在命令窗口键入 global HE HE= 0.124; 则这样 HE 就变成了全局变量。 如果需要求解一个附表达式并将运算结果存于某一变量,可由下述语句实现 A=3*16+10-27/3 运行上述语句可得到 A= 49 若直接输入附表达式,而没有将运算结果赋值给变量,MATLAB 将自动将结果存 于内部 “ans”中并加以显示,例如输入 3*16+10-27/3 运行得到 ans = 49 如果在表达式的最后应用“;’结束,虽然不会影响对变量赋值的结果,但运算 结果将不在屏幕上显示。 另外 MATLAB 自身具有一些内部常数或准内部变量(函数),允许用户直接加以使 用,如附表 1-1 所示。 附表 1-1 内部常数与变量 内部常数(函数)名 功 能 内部常数(函数)名 功 能 i 虚数单位 flops 计算浮点运算次数 j 虚数单位 clock 时间 pi 圆周率 date 日期 inf 无穷大 tic,toc 时间间隔 nan 不定值 etime 时间间隔 2 基本运算符 MATLAB 语言具有强大的运算功能,它能够为用户提供所需计算的各种算术与逻 辑运算。附表 1-2 给出了 MATLAB 的主要算术与逻辑关系运算符及其相应的功能解 释。 附表 1-2 算术与逻辑运算符 运算符 功能解释 运算符 功能解释 + 加 == 等于
减 不等于 (矩阵)乘 数组 小于 (矩阵)乘方 大于等于 数组乘方 小于等于 (矩阵)左除 逻辑与 数组左除 辑或 (矩阵)右除 逻辑非 数组右除 3M文件 所谓M文件就是用 MATLAB语言编写的磁盘文件,该文件均以“.m”作为文件 的扩展名,它们都是 ASCII码的文件格式,因此可以采用任何能够生成 ASCII码文 件格式的编辑器加以编辑。M文件分为脚本( script)文件与函数( function)文件两大 类 1.M脚本文件 M脚本文件就是根据用户要求,使用 MATLAB语言组成的具有一定功能的 MATLAB 指令集合。M脚本文件运行后,所产生的变量驻留在 MATLAB的工作空间中,只要用 户不对其使用 clear命令加以清除(或关闭 MATLAB命令窗口),则这些变量将会一直 保留在 MATLAB的工作空间中。下述 MATLAB语句如果以.m为扩展名存盘,就构成了 M脚本文件。 den=conv(conv([1,0],[1,3]),[1,2,2]) Gl=tf(num, den) Ab= a-b*c Step (ab, Bb, Cb, Db) 2M函数文件 从结构上看M函数文件的第一行一定具有函数声明行,该行是以 function作为 该行的关键字,它是M函数文件必须具有的内容。在该行中,函数名与函数的相关 变量均被加以定义:而M函数文件的另一关键内容是M函数体,这也是M函数文件
208 - 减 ~= 不等于 * (矩阵)乘 > 大于 .* 数组乘 < 小于 ^ (矩阵)乘方 >= 大于等于 .^ 数组乘方 <= 小于等于 \ (矩阵)左除 & 逻辑与 .\ 数组左除 | 逻辑或 / (矩阵)右除 ~ 逻辑非 ./ 数组右除 3 M 文件 所谓 M 文件就是用 MATLAB 语言编写的磁盘文件,该文件均以“.m”作为文件 的扩展名,它们都是 ASCII 码的文件格式,因此可以采用任何能够生成 ASCII 码文 件格式的编辑器加以编辑。M 文件分为脚本(script)文件与函数(function)文件两大 类。 1.M 脚本文件 M 脚本文件就是根据用户要求,使用 MATLAB 语言组成的具有一定功能的 MATLAB 指令集合。M 脚本文件运行后,所产生的变量驻留在 MATLAB 的工作空间中,只要用 户不对其使用 clear 命令加以清除(或关闭 MATLAB 命令窗口),则这些变量将会一直 保留在 MATLAB 的工作空间中。下述 MATLAB 语句如果以. m 为扩展名存盘,就构成了 M 脚本文件。 num=2* [1,2」; den=conv(conv([1,0],[1,3]),[l,2,2]); G1=tf(num, den); G=ss( G1); [a, b, c, d]= ssdata(G); Ab= a-b*c Bb= b Cb= c Db=0 Step(Ab,Bb,Cb,Db) 2.M 函数文件 从结构上看 M 函数文件的第一行一定具有函数声明行,该行是以 function 作为 该行的关键字,它是 M 函数文件必须具有的内容。在该行中,函数名与函数的相关 变量均被加以定义;而 M 函数文件的另一关键内容是 M 函数体,这也是 M 函数文件
不可缺少的一部分内容,由它实现该M函数文件的相应功能。在这两部分之间可以 插入各种注释与说明,这些注释与说明的内容放在%后面,该部分内容不作为程序 加以执行,而为在线帮助和阅读程序提供必要的信息。在M函数文件中所定义的变 量都是内部变量,函数执行完毕后这些变量将随之消失,不会影响 MATLAB的整个工 作空间,M函数文件就是建立一个函数,而这个函数可以同 ATLAB的基本库函数一样 加以使用,附表1-3给出了 MATLAB的常用基本数学函数。 附表1-3基本数学函数 函数名 函数名 sin(x) 正弦函数1n(x 自然对数ln(x) cos 余弦函数 1og0(x)以10为底的对数函数 tan (x) 正切函数 模或绝对值 cot(x) 余切函数 angle(x) 复相角 正割函数 共轭复数 余割函数 I mag (x 复数虚部 弦函数 数实部 acos(x) 反余弦函数 fix(x) 近似0的整数 近似小于自身的最大整 atan (x) 反正切函数 floor(x) 数 acot (x) 反余切函数 ceil(x) 近似大于自身的最小整 asec(x) 反正割函数 round(x) 四舍五入 acsc(x) 反余割函数 除以y的余数 指数e函数 符号函数 考查下述例子 ction y= mean(x)% Thi is a M function file 将上述程序存入mean1.m的磁盘文件,从而构造了一个M函数文件,该函数文 件能够实现对平均数的求取。现在如果需要即可对其加以使用,在 MATLAB命令窗口 中键入 运行得到 该例就是直接使用了所建立的M函数文件,对数列r求出相应的平均数
209 不可缺少的一部分内容,由它实现该 M 函数文件的相应功能。在这两部分之间可以 插入各种注释与说明,这些注释与说明的内容放在%后面,该部分内容不作为程序 加以执行,而为在线帮助和阅读程序提供必要的信息。在 M 函数文件中所定义的变 量都是内部变量,函数执行完毕后这些变量将随之消失,不会影响 MATLAB 的整个工 作空间,M 函数文件就是建立一个函数,而这个函数可以同 ATLAB 的基本库函数一样 加以使用,附表 1-3 给出了 MATLAB 的常用基本数学函数。 附表 1-3 基本数学函数 函数名 功能 函数名 功能 sin(x) 正弦函数 ln(x) 自然对数 ln(x) cos(x) 余弦函数 log10(x) 以 10 为底的对数函数 tan(x) 正切函数 abs(x) 模或绝对值 cot(x) 余切函数 angle(x) 复相角 sec(x) 正割函数 conj(x) 共轭复数 csc(x) 余割函数 imag(x) 复数虚部 asin(x) 反正弦函数 real(x) 复数实部 acos(x) 反余弦函数 fix(x) 近似 0 的整数 atan(x) 反正切函数 floor(x) 近似小于自身的最大整 数 acot(x) 反余切函数 ceil(x) 近似大于自身的最小整 数 asec(x) 反正割函数 round(x) 四舍五入 acsc(x) 反余割函数 rem(x,y) x 除以 y 的余数 exp(x) 指数 e x 函数 sign(x) 符号函数 考查下述例子。 function y= mean(x)% Thi is a M function file m=length(x); y=sum(x)/m; 将上述程序存入 meanl.m 的磁盘文件,从而构造了一个 M 函数文件,该函数文 件能够实现对平均数的求取。现在如果需要即可对其加以使用,在 MATLAB 命令窗口 中键入 r= 1:99; mean (r) 运行得到 ans= 50 该例就是直接使用了所建立的 M 函数文件,对数列 r 求出相应的平均数
4矩阵、数组与基本数值运算功能 矩阵与数组在形式上有相似之处,但概念是不同的。矩阵表示的是一种线性变 换关系,它有着严格的线性代数运算规则,而数组运算则是由 MATLAB软件定义的。 4.1矩阵的建立 在 MATLAB中一个矩阵不但可以表示为数学意义上的矩阵,也可表示为一个向量 对于一个向量可以认为是一个1Xn或nx1的矩阵,显然标量就是向量的特殊形 式。在MAT一LAB中矩阵的建立有多种方法,主要可以通过下述途径加以实现 1.直接输入法 对于一个矩阵一般可以直接输入得到,如键入 A=[123:456;789] 会得到相应的矩阵为 258 对于较大的矩阵也可分行输入,如键入 A=[1.0,2.0,3.0,4.0 5.0,6.0,7.0,8.0 9.0,10,11,12 13,14,15,16] 得到相应的矩阵为 A 9101112 1314151 可以看出在建立矩阵时,元素之间空格和“,”的意义相同,“;”的意义是起换 行符的作用 2.在M文件中构建矩阵 M文件是一类含有 MATLAB合法代码的文本文件。用户可以通过采用M文件构造 所需要的矩阵。在 MATLAB中建立下述M文件,并将其存盘,取temp.m作为该M文 件名 =[123 210
210 4 矩阵、数组与基本数值运算功能 矩阵与数组在形式上有相似之处,但概念是不同的。矩阵表示的是一种线性变 换关系,它有着严格的线性代数运算规则,而数组运算则是由 MATLAB 软件定义的。 4.1 矩阵的建立 在MATLAB中一个矩阵不但可以表示为数学意义上的矩阵,也可表示为一个向量。 对于一个向量可以认为是一个 1 X n 或 n X 1 的矩阵,显然标量就是向量的特殊形 式。在 MAT-LAB 中矩阵的建立有多种方法,主要可以通过下述途径加以实现。 1.直接输入法 对于一个矩阵一般可以直接输入得到,如键入 A=[12 3;4 5 6;7 8 9] 会得到相应的矩阵为 A= 1 2 3 4 5 6 7 8 9 对于较大的矩阵也可分行输入,如键入 A=[ 1.0,2.0,3.0,4.0 5.0,6.0,7.0,8.0 9.0,10,11,12 13,14,15,16] 得到相应的矩阵为 A= 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 可以看出在建立矩阵时,元素之间空格和“,”的意义相同,“;”的意义是起换 行符的作用。 2.在 M 文件中构建矩阵 M 文件是一类含有 MATLAB 合法代码的文本文件。用户可以通过采用 M 文件构造 所需要的矩阵。在 MATLAB 中建立下述 M 文件,并将其存盘,取 temp.m 作为该 M 文 件名。 B=[1 2 3 4