系统分析与控制

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

系统分析与控制实验指导书

石油大学机电教研室

二○○○年四月

第三篇MATLAB语言应用

一、概述

MATLAB是以复数矩阵作为基本编程单元的一种程序设计语言,它提供了矩阵的运算与操作。并有较强的绘图功能,已成为国际上最流行的控制系统CAD的软件工具。不仅流行于控制界,在生物医学语言图像处理,分析,计算机技术等各行各业也有广泛应用。

MATLAB是一个功能极强的高度集成化程序设计语言。它具备一般程序设计语言的基本语句结构。但功能更强,这是C或FORTRAN语言无法比拟的。

由于MATLAB提供了强大的矩阵处理和绘图功能,控制界学者将自己擅长的CSCAD方法用MA TLAB加以实现,出现了大量的MA TLAB配套工具箱。如控制界流行的控制系统工具箱(control systems toolbox),系统辨识工具箱(system identification toolbox),鲁棒控制工具箱(robust control toolbox),多变量频域设计工具箱(multivariable frequency design toolbox),最优化工具箱(optimization toolbox),信号处理工具箱(signal processing toolbox)以及仿真环境SIMULINK。这使得MATLAB风靡国际控制界。

值得一提的是,1990年MathWorks软件公司为MA TLAB提供了新的控制系统模型图形输入与仿真工具,原名为SIMULAB,该工具很快在控制界就有了广泛的使用。1992年以来正式改名为SIMULINK,这一名字的含义是相当直观的,因为它较明显地表明此软件的两个显著的功能:SIMU(仿真)与LINK(连接),亦即可以利用鼠标器在模型窗口上“画’’出所需的控制系统模型,然后利用SIMULINK提供的功能来对系统进行仿真或线性化分析。这种做法的一个优点是,可以使得一个很复杂系统的输入变得相当容易且直观。

MATLAB 4.x 版本运行在microsoft windows 环境,在MA TLAB语言环境下,>>标志为MATLAB的命令提示符,MATLAB命令窗口的界面下,有一个菜单条,其中提供了很多功能,在命令行键入DEMO命令,它将启动演示程序,从而领略MA TLAB的强大运算和绘图功能。

二、MATLAB的基本语句结构

MATLAB实际上可以认为是一种解释性语言,在MATLAB工作环境下,键入一个命令或程序,MA TLAB对它进行处理,最后返回运算结果。

2.1 MATLAB语言

最基本的赋值语言结构为:

变量名列表=表达式

左边为返回值,右边是表达式定义,可以是矩阵运算,也可以包含MA TLAB下的函数调用。表达式可以由分号结束,也可以由逗号或换行符结束,但含义不同,如以分号结束则左边变量结果将不显示,否则将把左边返回矩阵的内容全部显示出来。

和C语言类似,MATLAB是区分大小写的(case-sensitive)。MATLAB 和C语言不同,在调用函数时MATLAB可以返回多个结果(亦即多个矩阵),这时等号左边是由[ ] 括起来的矩阵列表,例如:

[m, p] = bode(n, d, w)

中调用了控制系统工具箱的bode( )函数来求取传递函数n, d在指定的频率段w内的幅值响应m和相位响应p。

MATLAB 函数调用时输入输出变量分别在等号两边列出,这种记号很容易记忆。也可以采用下面格式调用

1

[m, p] = bode(a, b, c, d, 1, w)

其中a, b, c, d, 为系统的状态方程描述,MA TLAB会自动地从输入参数个数上判定给出的是传递函数还是状态方程模型,从而进行正确计算,这类似于C++中重载的观念。

2.2 矩阵的输入

输入格式为

>> A=[1,2,3;4,5,6;7,8,0]

A= 1 2 3

4 5 6

7 8 0

其中同一行中的内容用逗号分隔,而采用分号来表示换行。上述格式输入矩阵A后,矩阵内容将在屏幕上显示出来。如在上面赋值表达式的末尾加一个分号,这矩阵内容就不显示了。这由用户通过在语句末尾加分号的方式来决定是否显示运算结果。

同一行中分隔的逗号也可以由空格来代替。如下方式也是许可的

>> A=[1 2 3; 4 5 6

7 8 9]; 或>>A=[1 2 3; 4,5,…

6;7 8,9];

向量的输入是一般矩阵输入的特殊情况,下面的两条命令分别定义了行和列向量

>> V1=[1 2 3,4] >> V2=[1;2;3;4]

学会了矩阵的基本表示方法后,就容易理解下面的输入方式和结果了

>> A=[A;[1 3 5]]

MATLAB 定义了两个基本的复数常量,i和j, 这些值为数学上的1

-。如果它们不被赋值,则将保留这种定义。如果重新赋值,将保留新的值,如采用MATLAB命令a=sqrt(-1)则也定义了a 为复数常量。

在MA TLAB下4+3*i的赋值命令将得出4.0000+3.0000i的结果,而利用前面的A矩阵,在输入命令A+ones(size(A))*i 后得到一个复数矩阵,注意不能在一个复数元素之内加空格,如[1 +2*i, 2] 赋值表达式因在1和+2*i之间无意多留一个空格,将被错误解释成含有三个元素的向量。

>> A+ones (size(A))*i

ans=

在变量赋值语句中,等号左边的矩阵名列表和等号一起可以省略,这时将把返回的矩阵名设置为ans变量。ans 是保留的MA TLAB字符串,它表示上面一个式子的返回结果。

其它保留字符有:

判断0元素的误差限eps, 其默认值eps=2.2204×10-16,用户可以用eps=eps×10修正。

pi表示圆周率π

inf 表示无穷大∞,MA TLAB允许最大数值为1.7976931×10308, inf的一个计算方法为1/0,这种计算在MA TLAB中是允许的。

NaN常量,它是一个不定式(Not a Number),由inf/inf或0/0产生的。

在MA TLAB中这样的矩阵赋值A=[1 2 inf; 1 2 5]是允许的。

>> A=[1 2 inf;1 2 5]

它与列向量B=[1;2;3]乘积为

>>A*B

ans= inf

20

2

相关文档
最新文档