资源描述:
《系统分析与控制》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、系统分析与控制实验指导书石油大学机电教研室二○○○年四月13第三篇MATLAB语言应用一、概述MATLAB是以复数矩阵作为基本编程单元的一种程序设计语言,它提供了矩阵的运算与操作。并有较强的绘图功能,已成为国际上最流行的控制系统CAD的软件工具。不仅流行于控制界,在生物医学语言图像处理,分析,计算机技术等各行各业也有广泛应用。MATLAB是一个功能极强的高度集成化程序设计语言。它具备一般程序设计语言的基本语句结构。但功能更强,这是C或FORTRAN语言无法比拟的。由于MATLAB提供了强大的矩阵处理和绘图功能,控制界学者将自己擅长的CSCAD方法用MATLAB加以实现,出现了大量的MAT
2、LAB配套工具箱。如控制界流行的控制系统工具箱(controlsystemstoolbox),系统辨识工具箱(systemidentificationtoolbox),鲁棒控制工具箱(robustcontroltoolbox),多变量频域设计工具箱(multivariablefrequencydesigntoolbox),最优化工具箱(optimizationtoolbox),信号处理工具箱(signalprocessingtoolbox)以及仿真环境SIMULINK。这使得MATLAB风靡国际控制界。值得一提的是,1990年MathWorks软件公司为MATLAB提供了新的控制系统模型
3、图形输入与仿真工具,原名为SIMULAB,该工具很快在控制界就有了广泛的使用。1992年以来正式改名为SIMULINK,这一名字的含义是相当直观的,因为它较明显地表明此软件的两个显著的功能:SIMU(仿真)与LINK(连接),亦即可以利用鼠标器在模型窗口上“画’’出所需的控制系统模型,然后利用SIMULINK提供的功能来对系统进行仿真或线性化分析。这种做法的一个优点是,可以使得一个很复杂系统的输入变得相当容易且直观。MATLAB4.x版本运行在microsoftwindows环境,在MATLAB语言环境下,>>标志为MATLAB的命令提示符,MATLAB命令窗口的界面下,有一个菜单条,其
4、中提供了很多功能,在命令行键入DEMO命令,它将启动演示程序,从而领略MATLAB的强大运算和绘图功能。二、MATLAB的基本语句结构MATLAB实际上可以认为是一种解释性语言,在MATLAB工作环境下,键入一个命令或程序,MATLAB对它进行处理,最后返回运算结果。2.1MATLAB语言最基本的赋值语言结构为:变量名列表=表达式左边为返回值,右边是表达式定义,可以是矩阵运算,也可以包含MATLAB下的函数调用。表达式可以由分号结束,也可以由逗号或换行符结束,但含义不同,如以分号结束则左边变量结果将不显示,否则将把左边返回矩阵的内容全部显示出来。和C语言类似,MATLAB是区分大小写的(
5、case-sensitive)。MATLAB和C语言不同,在调用函数时MATLAB可以返回多个结果(亦即多个矩阵),这时等号左边是由[]括起来的矩阵列表,例如:[m,p]=bode(n,d,w)中调用了控制系统工具箱的bode()函数来求取传递函数n,d在指定的频率段w内的幅值响应m和相位响应p。MATLAB函数调用时输入输出变量分别在等号两边列出,这种记号很容易记忆。也可以采用下面格式调用13[m,p]=bode(a,b,c,d,1,w)其中a,b,c,d,为系统的状态方程描述,MATLAB会自动地从输入参数个数上判定给出的是传递函数还是状态方程模型,从而进行正确计算,这类似于C++中
6、重载的观念。2.2矩阵的输入输入格式为>>A=[1,2,3;4,5,6;7,8,0]A=123456780其中同一行中的内容用逗号分隔,而采用分号来表示换行。上述格式输入矩阵A后,矩阵内容将在屏幕上显示出来。如在上面赋值表达式的末尾加一个分号,这矩阵内容就不显示了。这由用户通过在语句末尾加分号的方式来决定是否显示运算结果。同一行中分隔的逗号也可以由空格来代替。如下方式也是许可的>>A=[123;456789];或>>A=[123;4,5,…6;78,9];向量的输入是一般矩阵输入的特殊情况,下面的两条命令分别定义了行和列向量>>V1=[123,4]>>V2=[1;2;3;4]学会了矩阵的
7、基本表示方法后,就容易理解下面的输入方式和结果了>>A=[A;[135]]MATLAB定义了两个基本的复数常量,i和j,这些值为数学上的。如果它们不被赋值,则将保留这种定义。如果重新赋值,将保留新的值,如采用MATLAB命令a=sqrt(-1)则也定义了a为复数常量。在MATLAB下4+3*i的赋值命令将得出4.0000+3.0000i的结果,而利用前面的A矩阵,在输入命令A+ones(size(A))*i后得到一个复数矩阵,注意不