第 1 章 MATLAB 简介及在控制系统中应用
概述
一、 MATLAB 简介
MATLAB 是 Mathworks 公司开发的一种集数值计算、符号计算和图形可视化三大基本功
能于一体的功能强大、操作简单的优秀工程计算应用软件。MATLAB 不仅可以处理代数问题
和数值分析问题,而且还具有强大的图形处理及仿真模拟等功能。从而能够很好的帮助工程
师及科学家解决实际的技术问题。
MATLAB 的含义是矩阵实验室(Matrix Laboratory),最初主要用于方便矩阵的存取,
其基本元素是无需定义维数的矩阵。经过十几年的扩充和完善,现已发展成为包含大量实用
工具箱(Toolbox)的综合应用软件,不仅成为线性代数课程的标准工具,而且适合具有不
同专业研究方向及工程应用需求的用户使用。
MATLAB 最重要的特点是易于扩展。它允许用户自行建立完成指定功能的扩展 MATLAB 函
数(称为 M 文件),从而构成适合于其它领域的工具箱,大大扩展了 MATLAB 的应用范围。目
前,MATLAB 已成为国际控制界最流行的软件,控制界很多学者将自己擅长的 CAD 方法用
MATLAB 加以实现,出现了大量的 MATLAB 配套工具箱,如控制系统工具箱(control systems
toolbox),系统识别工具箱(system
identification toolbox),鲁棒控制工具箱(robust
control
toolbox),信号处理工具箱(signal processing toolbox)以及仿真环境 SIMULINK
等。
(1) MATLAB 的安装
本节将讨论操作系统为 Microsoft Windows 环境下安装 MATLAB7.0 的过程。
将 MATLAB7.0 的安装盘放入光驱,系统将自动运行 auto-run.bat 文件,进行安装;也
可以执行安装盘内的 setup.exe 文件启动 MATLAB 的安装程序。启动安装程序后,屏幕将显
示安装 MATLAB 的初始界面,根据 Windows 安装程序的常识,不断单击[Next],输入正确的安
装信息,具体操作过程如下:
输入正确的用户注册信息码;
选择接收软件公司的协议;
输入用户名和公司名;
选择 MATLAB 组件(Toolbox);
选择软件安装路径和目录;
单击[Next]按钮进入正式的安装界面。安装过程界面如图 1 所示。
图 1
MATLAAB 安装过程界面
安装完毕后,选择[Restart my computer now]
选项以重新启动计算机。
重新启动计算机后,用户就可以点击图标
使用 MATLAB7.0 了。MATLAB 启动过程界面如
图 2 所示。
(2) MATLAB 桌面系统
MATLAB 的桌面系统由桌面平台以及桌面组
件共同构成,如图 3。桌面平台是各桌面组件的
展示平台,它提供了一系列的菜单操作以及工具
栏操作,而不同功能的桌面组件构成了整个 MATLAB 操作平台。其组件主要包含如下 8 个组
件部分:
MATLAAB 启动过程界面
图 2
①命令窗口(Command Window)②历史命令窗口(Command History)③组件平台(Launch
Pad)④路径浏览器(Current Directory Browser)⑤帮助浏览器(Help Browser)⑥
工作空间浏览器(Workspace
Browser)⑦数组编辑器(Array Editor)⑧M 文件编辑
调试器(Editor-Debugger)。
用户可以在 View 菜单下选择打开或关闭某个窗口。
图 3 MATLAB 桌面平台
(3) MATLAB 命令窗口
MATLAB 可以认为是一种解释性语言。在 MATLAB 命令窗口中,标志>>为命令提示符,在
命令提示符后面键入一个 MATLAB 命令时,MATLAB 会立即对其进行处理,并显示处理结果。
这种方式简单易用,但在编程过程中要修改整个程序比较困难,并且用户编写的程序不
容 易 保 存 。 如 果 想 把 所 有 的 程 序 输 入 完 再 运 行 调 试 , 可 以 用 鼠 标 点 击 快 捷 或
File|New|M-file 菜单,在弹出的编程窗口中逐行输入命令,输入完毕后点击 Debug|Run(或
F5)运行整个程序。运行过程中的错误信息和运行结果显示在命令窗口中。整个程序的源代
码可以保存为扩展名为“.m”的 M 文件。
在介绍 MATLAB 的强大计算和图象处理功能前,我们可以先运行一个简单的程序。
设系统的闭环传递函数为:
)(
sG
s
2
4
s
8
2
s
求系统的时域响应图,可输入下面的命令:
>> num=[1,4];
den=[1,2,8];
step(num,den)
图 4 动态响应时域图
程序运行后会在一个新的窗口中显示出系统的时域动态响应曲线,如图 4。用鼠标左键
点击动态响应曲线的某一点,系统会提示其响应时间和幅值。按住左键在曲线上移动鼠标的
位置可以很容易的根据幅值观察出上升时间、调节时间、峰值及峰值时间,进而求出超调量。
如 果 想 求 根 轨 迹 , 可 将 程 序 的 第 三 行 变 为 rlocus(num,den) , 求 伯 德 图 可 改 为
bode(num,den)。所不同的是,在根轨迹和伯德图中,G(s)为开环传递函数。
MATLAB 的语法规则类似于 C 语言,变量名、函数名都与大小写有关,即变量 A 和 a 是
两个完全不同的变量。应该注意所有的函数名均由小写字母构成。
MATLAB 是一个功能强大的工程应用软件,它提供了相当丰富的帮助信息,同时也提供
了多种获得帮助的方法。如果用户第一次使用 MATLAB,则建议首先在>>提示符下键入 DEMO
命令,它将启动 MATLAB 的演示程序。用户可以在此演示程序中领略 MATLAB 所提供的强大的
运算和绘图功能。
二、 MATLAB 基本操作命令
本节简单介绍与本书内容相关的一些基本知识和操作命令。
(1)简单矩阵的输入
MATLAB 是一种专门为矩阵运算设计的语言,所以在 MATLAB 中处理的所有变量都是矩阵。
这就是说,MATLAB 只有一种数据形式,那就是矩阵,或者数的矩形阵列。标量可看作为 1
×1 的矩阵,向量可看作为 n×1 或 1×n 的矩阵。这就是说,MATLAB 语言对矩阵的维数及类
型没有限制,即用户无需定义变量的类型和维数,MATLAB 会自动获取所需的存储空间。
输入矩阵最便捷的方式为直接输入矩阵的元素,其定义如下:
(1) 元素之间用空格或逗号间隔;
(2) 用中括号([])把所有元素括起来;
(3) 用分号(;)指定行结束。
例如,在 MATLAB 的工作空间中,输入:
>>
a
54 3 2[
]9
;
6
则输出结果为:
a
432
965
矩阵 a 被一直保存在工作空间中,以供后面使用,直至修改它。
MATLAB 的矩阵输入方式很灵活,大矩阵可以分成 n 行输入,用回车符代替分号或用续
行符号(…)将元素续写到下一行。例如:
a
]987654321[
, , ; , , ; , ,
a
3 2 1 [
6 5 4
8 7
9]
a
54321[
, , ; , ,
]9876
, , ;
以上三种输入方式结果是相同的。一般若长语句超出一行,则换行前使用续行符号(…)。
在 MATLAB 中,矩阵元素不限于常量,可以采用任意形式的表达式。同时,除了直接输
入方式之外,还可以采用其它方式输入矩阵,如:
(1) 利用内部语句或函数产生矩阵;
(2) 利用 M 文件产生矩阵;
(3) 利用外部数据文件装入到指定矩阵。
(2)复数矩阵输入
MATLAB 允许在计算或函数中使用复数。输入复数矩阵有两种方法:
(1) a=[12;34]+i*[56;78]
(2) a=[1+5i
2+6i;3+7i
注意,当矩阵的元素为复数时,在复数实部与虚部之间不允许使用空格符。如 1 +5i
4+8i]
将被认为是 1 和 5i 两个数。另外,MATLAB 表示复数时,复数单位也可以用 j。
(3) MATLAB 语句和变量
MATLAB 是一种描述性语言。它对输入的表达式边解释边执行,就象 BASIC 语言中直接
执行语句一样。
MATLAB 语句的常用格式为:
变量=表达式[;]
或简化为:
表达式[;]
表达式可以由操作符、特殊符号、函数、变量名等组成。表达式的结果为一矩阵,它赋
给左边的变量,同时显示在屏幕上。如果省略变量名和“=”号,则 MATLAB 自动产生一个
名为 ans 的变量来表示结果,如:
1900∕81
结果为:
ans
.23
4568
ans 是 MATLAB 提供的固定变量,具有特定的功能,是不能由用户清除的。常用的固定
变量还有 eps、pi、Inf、NaN 等。其特殊含义可以用 7.2.10 节介绍的方法查阅帮助。
MATAB 允许在函数调用时同时返回多个变量,而一个函数又可以由多种格式进行调用,
语句的典型格式可表示为:
[返回变量列表]=fun-name(输入变量列表)
例如用 bode()函数来求取或绘制系统的 Bode 图,可由下面的格式调用:
[
,mag
phase
]
bode
(
num,
)Wden,
其中变量 num、den 表示系统传递函数分子和分母,W 表示指定频段,mag 为计算幅值,
phase 为计算相角。
(4)语句以“%”开始和以分号“;”结束的特殊效用
在 MATLAB 中以“%”开始的程序行,表示注解和说明。符号“%”类似于 C++中的“//”。
这些注解和说明是不执行的。这就是说,在 MATLAB 程序行中,出现“%”以后的一切内容
都是可以忽略的。
分号用来取消打印,如果语句最后一个符号是分号,则打印被取消,但是命令仍在执行,
而结果不再在命令窗口或其它窗口中显示。这一点在 M 文件中大量采用,以抑制不必要的信
息显示。
(5)获取工作空间信息
MATLAB 开辟有一个工作空间,用于存储已经产生的变量。变量一旦被定义,MATLAB 系
统会自动将其保存在工作空间里。在退出程序之前,这些变量将被保留在存储器中。
为了得到工作空间中的变量清单,可以在命令提示符>>后输入 who 或 whos 命令,当
前存放在工作空间的所有变量便会显示在屏幕上。
命令 clear 能从工作空间中清除所有非永久性变量。如果只需要从工作空间中清除某个
特定变量,比如“x”,则应输入命令 clear x。
(6)常数与算术运算符
MATLAB 采用人们习惯使用的十进制数。如:
9.6397238
20
3 –99
62252
.6
0.0001
23e
2i
.1
-3.14159i
60210
3e5i
e
其中
i
1
。
数值的相对精度为 eps,它是一个符合 IEEE 标准的 16 位长的十进制数,其范围为:
308
10
10~
308
。
MATLAB 提供了常用的算术运算符:+,-, ,∕(﹨),^(幂指数)。
应该注意:(∕)右除法和(﹨)左除法这两种符号对数值操作时,其结果相同,其斜
线下为分母,如 1∕4 与 4﹨1,其结果均为 0.25,但对矩阵操作时,左、右除法是有区别的。
(7)选择输出格式
输出格式是指数据显示的格式,MATLAB 提供 format 命令可以控制结果矩阵的显示,而
不影响结果矩阵的计算和存储。所有计算都是以双精度方式完成的。
(1) 如果矩阵的所有元素都是整数,则矩阵以不带小数点的格式显示。
如输入:
1[x
0
]1
则显示:
x
1-
0
1
(2) 如果矩阵中至少有一个元素不是整数,则有多种输出格式。常见格式有以下四
种:
① format short(短格式,也是系统默认格式)
② format short
③ format long(长格式)
④ format long e(长格式科学表示)
如:
e(短格式科学表示)
x
3/4[
.1
2345
]6e
对于以上四种格式,其显示结果分别为:
x
1.3333
0000
.0
短格式 5 位表示
x
1.3333e
00
.1
2345
e
06
短格式科学表示
x
1.3333
3333333333
.0
0000012345
0000
长格式 16 位表示
x
一旦调用了某种格式,则这种被选用的格式将保持,直到对格式进行了改变为止。
3333333333
e
2345000000
长格式科学表示
1.3333
00000
.1
06
00
e
(8)MATLAB 图形窗口
当调用了一个产生图形的函数时,MATLAB 会自动建立一个图形窗口。这个窗口还可分
裂成多个窗口,并可在它们之间选择,这样在一个屏上可显示多个图形。
图形窗口中的图形可通过打印机打印出来。若想将图形导出并保存,可用鼠标点击菜单
File|Export,导出格式可选 emp、bmp、jpg 等。命令窗口的内容也可由打印机打印出来:如
果事先选择了一些内容,则可打印出所选择的内容;如果没有选择内容,则可打印出整个工
作空间的内容。
(9)剪切板的使用
利用 Windows 的剪切板可在 MATLAB 与其它应用程序之间交换信息。
(1) 要将 MATLAB 的图形移到其它应用程序,首先按 Alt-Print Screen 键,将图形
复制到剪切板中,然后激活其它应用程序,选择 edit(编辑)中的 paste(粘贴),就可以
在应用程序中得到 MATLAB 中的图形。当然还可以借助于 copy to Bitmap 或 copy to
Metafile 选项来传递图形信息。
(2) 要将其它应用程序中的数据传递到 MATLAB,应先将数据放入剪切板,然后在
MATLAB 中定义一个变量来接收。
如键入:
q=[
然后选择 Edit 中的 paste,最后加上“]”,这样可将应用程序中的数据送入 MATLAB
的 q 变量中。
(10)MATLAB 编程指南
MATLAB 的编程效率比 BASIC、C、FORTRAN 和 PASCAL 等语言要高,且易于维护。在编写
小规模的程序时,可直接在命令提示符>>后面逐行输入,逐行执行。对于较复杂且经常重复
使用的程序,可按 7.1.3 介绍的方法进入程序编辑器编写 M 文件。
M 文件是用 MATLAB 语言编写的可在 MATLAB 环境中运行的磁盘文件。它为脚本文件
(Script File)和函数文件(Function File),这两种文件的扩展名都是.m。
(1) 脚本文件是将一组相关命令编辑在一个文件中,也称命令文件。脚本文件的语
句可以访问 MATLAB 工作空间中的所有数据,运行过程中产生的所有变量都是全局变量。例
如下述语句如果以.m 为扩展名存盘,就构成了 M 脚本文件,我们不妨将其文件名取为
“Step_Response”。
% 用于求取一阶跃响应。
num=[1 4];
den=[1 2 8];
step(num,den)
当你键入 help Step_Response 时,屏幕上将显示文件开头部分的注释:
用于求取一阶跃响应。
很显然,在每一个 M 文件的开头,建立详细的注释是非常有用的。由于 MATLAB 提供了
大量的命令和函数,想记住所有函数及调用方法一般不太可能,通过联机帮助命令 help 可
容易地对想查询的各个函数的有关信息进行查询。该命令使用格式为:
help 命令或函数名
注意:若用户把文件存放在自己的工作目录上,在运行之前应该使该目录处在 MATLAB
的搜索路径上。当调用时,只需输入文件名,MATLAB 就会自动按顺序执行文件中的命令。
(2) 函数文件是用于定义专用函数的,文件的第一行是以 function 作为关键字引导
的,后面为注释和函数体语句。
函数就像一个黑箱,把一些数据送进去,经加工处理,再把结果送出来。在函数体内使
用的除返回变量和输入变量这些在第一行 functon 语句中直接引用的变量外,其它所有变量
都是局部变量,执行完后,这些内部变量就被清除了。
函数文件的文件名与函数名相同(文件名后缀为.m),它的执行与命令文件不同,不能
键入其文件名来运行函数,M 函数必须由其它语句来调用,这类似于 C 语言的可被其它函数
调用的子程序。M 函数文件一旦建立,就可以同 MATLAB 基本函数库一样加以使用。
例 求一系列数的平均数,该函数的文件名为“mean.m”
y=mean(x)
function
% 这是一个用于求平均数的函数
w=length(x);
y=sum(x)/w;
% length 函数表示取向量 x 的长度
% sun 函数表示求各元素的和
该文件第一行为定义行,指明是 mean 函数文件,y 是输出变量,x 是输入变量,其后
的%开头的文字段是说明部分。真正执行的函数体部分仅为最后二行。其中变量 w 是局部变
量,程序执行完后,便不存在了。
在 MATLAB 命令窗口中键入
>> r=1:10;
mean(r)
运行结果显示
% 表示 r 变量取 1 到 10 共 10 个数
ans =
5.5000
该例就是直接使用了所建立的 M 函数文件,求取数列 r 的平均数。
三、 MATLAB 在控制理论中的应用概述
3.1 概述
MATLAB 提供了大量的控制工程计算、设计库函数。其中,控制系统软件包包括复数
运算、特征值计算、方程求解、矩阵变换以及 FFT 等重要计算工具及举例。MATLAB 的线
性代数处理,矩阵运算和数值分析的能力为控制系统工程设计及其它学科研究提供了可靠的
基础和强有力的研究工具。
控制系统软件包利用 MATLAB 矩阵功能提供了适用于控制工程的专用函数,这些函数
大部分用 M 文件表示。控制系统软件包可以方便地用于控制系统设计、分析和建模。
在控制系统软件包中,控制系统通常采用传递函数与状态空间两种形式建模,允许“经
典”和“现代”技术并用,既可处理连续时间系统也可处理离散时间系统,并且可以进行不
同模型表示形式之间的相互转换,也可以计算和绘制时间响应、频率响应及根轨迹图。此外
M 文件还能够进行极点配置和最优控制器的参数计算。即使在软件包中没有提供的功能,
也可以通过编写新的 M 文件方式来构造。
3.1.1 系统模型
控制系统软件包可用于线性时不变(简称 LTI)系统模型。时不变系统模型包括:状态
空间模型;传递函数模型;零一极点增益模型;部分分式模型;离散时间模型。
下面介绍如何用矩阵表示不同类型的线性时不变系统模型。
〔1〕状态空间模型
一个 LTI 微分方程系统总可以用一组一阶微分方程组来表示。按矩阵或状态空间表示形
式,LTI 系统模型的一般形式如下
x =Ax+Bu
y=Cx+Du
其中:u 是一个 nu 维控制输入向量,x 是一个 ns 维状态向量,y 是 ny 维输出向量。
采用 MATLAB 表示状态空间系统十分容易。A,B,C,D 都是矩阵,均作为独立变量