实验一 MATLAB 在控制系统模型建立与仿真中的应用
一、 MATLAB 基本操作与使用
1. 实验目的
1) 熟悉 MATLAB工作环境平台及其各个窗口,掌握MATLAB 语言的基本规定,MATLAB图形绘制功能、M 文件程序设计。
2) 学习使用MATLAB控制系统工具箱中线性控制系统传递函数模型的相关函数。
2. 实验仪器
PC计算机一台,MATLAB软件1套
3. 实验内容
1) MATLAB工作环境平台
图1 在英文Windows 平台上的MATLAB6.5 MATLAB工作平台
① 命令窗口(Command Window)
命令窗口是对 MATLAB 进行操作的主要载体,默认的情况下,启动MATLAB 时就会打开命令窗口,显示形式如图 1 所示。一般来说,MATLAB的所有函数和命令都可以在命令窗口中执行。掌握 MALAB 命令行操作是走入 MATLAB 世界的第一步。命令行操作实现了对程序设计而言简单而又重要的人机交互,通过对命令行操作,避免了编程序的麻烦,体现了 MATLAB 所特有的灵活性。
在运行MATLAB后,当命令窗口为活动窗口时,将出现一个光标,光标的左侧还出现提示符“>>”,表示MATLAB正在等待执行命令。注意:每个命令行键入完后,都必须按回车键!
当需要处理相当繁琐的计算时,可能在一行之内无法写完表达式,可以换行表示,此时需要使用续行符“…”否则 MATLAB 将只计算一行的值,而不理会该行是否已输入完毕。
使用续行符之后 MATLAB 会自动将前一行保留而不加以计算,并与下一行衔接,等待完整输入后再计算整个输入的结果。
在 MATLAB 命令行操作中,有一些键盘按键可以提供特殊而方便的编辑操作。比如:“↑”可用于调出前一个命令行,“↓”可调出后一个命令行,避免了重新输入的麻烦。当然下面即将讲到的历史窗口也具有此功能。
② 历史窗口(Command History)
历史命令窗口是 MATLAB6 新增添的一个用户界面窗口,默认设置下历史命令窗口会保留自安装时起所有命令的历史记录,并标明使用时间,以方便使用者的查询。而且双击某一
行命令,即在命令窗口中执行该命令。
③ 当前目录窗口(Current Directory)
在当前目录窗口中可显示或改变当前目录,还可以显示当前目录下的文件,包括文件名、文件类型、最后修改时间以及该文件的说明信息等并提供搜索功能。
④ 工作空间管理窗口(Workspace)
工作空间管理窗口是 MATLAB 的重要组成部分。在工作空间管理窗口中将显示所有目前保存在内存中的 MATLAB 变量的变量名、数据结构、字节数以及类型,而不同的变量类型分别对应不同的变量名图标。
2) MATLAB 的基本规定
(1) 数值的表示
MATLAB 的数值采用十进制,可以带小数点或负号。以下表示都合法。0, -100, 0.008, 12.752,1.8e-6 ,8.2e52
(2) 变量命名规定
① 变量名、函数名:字母大小写表示不同的变量名。如A 和a 表示不同的变量名;sin 是MATLAB 定义的正弦函数,而Sin,SIN 等都不是。
② 变量名的第一个字母必须是英文字母,不能是数字,最多可包含31 个字符(英文、数字和下连字符)。如A21 是合法的变量名,而3A21 是不合法的变量名。
③ 变量名中不得包含空格、标点,但可以有下连字符。如变量名A _b21 是合法变量名,而A,21 是不合法的。
(3) 基本运算符
表1 MATLAB 表达式的基本运算符
数学表达式 | MATLAB 运算符 | MATLAB 表达式 | |
加 | a + b | + | a + b |
减 | a-b | - | a-b |
乘 | a×b | * | a*b |
除 | a÷b | /或\ | a/b或a\b |
幂 | ab | ^ | a^b |
点乘 | 两矩阵元素相乘 | .* | a.*b |
(4) MATLAB 默认的预定义变量
在MATLAB 中有一些预定义变量(predefined variable)。每当MATLAB 启动,这些变量就被产生。用户在定义变量时,尽量避开表2 所列预定义变量名,以免产生混淆。
表2 MATLAB 的预定义变量
预定义变量 | 含义 | 预定义变量 | 含义 |
ans | 计算结果的缺省变量名 | NaN或nan | matlab定义函数表达式 未定式,如0/0 |
eps | 机器零阈值 | nargin | 函数输入宗量数目 |
flops | 浮点运算次数 | nargout | 函数输出宗量数目 |
Inf 或inf | 无穷大,如1/0 | realmax | 最大正实数 |
i 或j | 虚单元i = j = | realmin | 最小正实数 |
pi | 圆周率π | ||
对《自动控制理论》书p409-410中简单数学运算的例子,请在MATLAB 命令窗口中对这些运算进行验证。
(5) MATLAB 的矩阵运算 (课本P410-411)
矩阵的输入和矩阵的运算
对课本p410-411中矩阵运算的例子,请在MATLAB 命令窗口中对这些运算进行验证。
3) MATLAB 图形绘制
在二维曲线绘制中,最基本的指令是plot( )函数。如果用户将x 和y 两组数据分别在向量x 和y 中存储,且它们的长度相同,调用该函数的格式为:
plot(x,y)
这时将在一个图形窗口上绘出所需要的二维图形。在MATLAB 命令窗口提示符“>>”下键入 help plot ,可得到plot( )函数的相关内容,如曲线颜和线型的改变。
任务一:在MATLAB 命令窗口提示符“>>”下,完成下述任务:
任务(1)绘制一个周期内的正弦曲线。先产生自变量t 时间向量,由给出的自变量时间向量求取其正弦函数值向量,然后调用plot( )函数绘制曲线。
任务(2) 在一个绘图窗口上同时绘制多条曲线。参考课本p411-412,写成命令,完成上述任务(1)和任务(2)。
4) M 文件程序设计
对于简单问题,使用直接输入命令简单有效,但对于较复杂和多次重复的问题,直接输入命令比较麻烦,使用M文件则简便。
MATLAB不仅用命令行方式工作,还可以像 BASIC、FORTRAN、C等其他高级计算机语言一样进行控制流的程序设计(MATLAB 语言的流程控制语句主要有 for、while、if-else-end 及 switch-case 等 4 种语句)。MATLAB控制流,即编制一种以 . m为扩展名的 MATLAB 程序(简称 M 文件)。由于商用的 MATLAB 软件是用 C 语言编写而成。因此,M 文件的语法与 C 语言十分相似。
建立和运行M文件程序的过程如下:
1 打开M文件编辑窗口:在图1中选择File→New→M-file菜单项实现,在M文件编辑窗口键入M文件的各行命令代码,例如输入课本P412M文件部分的例子代码
2 保存文件:在图2中选择File→Save菜单项,保存文件。例如可键入exp1,上述命令行就保存为exp1.m。
图2 建立和运行M文件程序的过程
3 调试运行M文件程序:可在图中选择Debug→Run菜单项,全速运行M文件程序。也可用鼠标点击行号后短横线,给程序设置断点,选择Debug→Step,单步运行M文件程序,并
根据工作空间管理窗口(Workspace)结果了解每条指令的功能。此外,在MATLAB命令窗口键入exp1(该M文件的名字,注意不写后缀)即可运行该M文件。
任务二:按上面的过程来建立并保存一个M文件程序,并调试运行M文件程序。
5) MATLAB控制系统工具箱中的线性系统传递函数模型的相关函数
(1)tf ( )函数
若要在MATLAB 环境下得到传递函数的形式,可以调用tf ( )函数。该函数的调用格式为 G = tf ( num, den );
其中num, den 分别为系统传递函数的分子和分母多项式系数向量。返回的G 为传递函数形式。
但如果分子或分母多项式给出的不是完全的展开的形式,而是若干个因式的乘积,则事先需要将其变换为完全展开的形式,两个多项式的乘积在MATLAB下借用卷积求取函数conv( )得出,其调用格式为 p=conv(p1,p2)
其中p1和p2为两个多项式,调用这个函数就能返回乘积多项式p。如果有3个多项式的乘积,就需要嵌套使用此函数,即
p=conv(p1,conv(p2,p3)) 或 p=conv(conv(p1,p2),p3)
请注意在调用时括号的匹配。
MATLAB还支持一种特殊的传递函数的输入格式,在这样的输入方式下,应该先用s=tf(’s’)定义传递函数算子,然后用数学表达式直接输入系统的传递函数。请自己通过下面两个例子来演示和掌握tf ()和s=tf(’s’)算子这两种输入方式。
例1 设系统传递函数
输入方式一:num = [1, 5, 3, 2]; den = [1, 2, 4, 3, 1]; %分子多项式和分母多项式
G = tf ( num, den ); %这样就获得系统的数学模型G 了。
这些命令可在命令行输入也可编成一个M文件。在MATLB提示符“>>”下键入G,或省略最后命令中分号,则可显示该数学模型。
输入方式二:s=tf(’s’); G=( s^3 + 5* s^2 + 3* s + 2)/( s^4 + 2*s^3 + 4* s^2 + 3* s + 1);
任务三:设系统传递函数 采用上面两种输入方式,输入其传递函数,并记录命令。
例2 设系统传递函数
此题分子或分母多项式给出的不是完全展开的形式,而是若干个因式的乘积,采用tf () 这一种输入法之前,应先用conv( )函数获得分子和分母多项式给出的完全展开的形式num和den,即输入命令:
num=conv([0,5],[1,2.4]);
den=conv(conv(conv([1,1],[1,1]),[1,3,4]),[1,0,1]);
G=tf(num,den) %语句没有分号结尾,故将显示系统传递函数
Transfer function:
5 s + 12
-------------------------------------------------
s^6 + 5 s^5 + 12 s^4 + 16 s^3 + 15 s^2 + 11 s + 4
这种情况用算子方法可以更直观地输入系统模型,输入命令为
s=tf('s');G=5*(s+2.4)/((s+1)^2*(s^2+3*s+4)*(s^2+1));
任务四:在MATLAB 命令窗口中对例2的这两种输入方法进行验证。
(2)tfdata()函数
如果有了传递函数G,则提取控制系统的传递函数的分子多项式num和分母多项式den可以由tfdata()函数来实现。如输入命令:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论