Matlab软件学习实用及典型控制系统建模分析.docx
《Matlab软件学习实用及典型控制系统建模分析.docx》由会员分享,可在线阅读,更多相关《Matlab软件学习实用及典型控制系统建模分析.docx(37页珍藏版)》请在冰豆网上搜索。
Matlab软件学习实用及典型控制系统建模分析
实验一Matlab软件学习实用及典型控制系统建模分析
第一节MATLAB入门
一.MATLAB的启动和退出
启动:
1.双击桌面上MATLAB的快捷方式图标
即可。
2.开始→程序→MATLAB6.5文件夹→单击
。
退出:
1.直接单击界面的关闭图标
即可退出MATLAB。
2.在指令窗口输入quit或exit后回车即可。
3.选择菜单File→ExitMATLAB。
二.MATLAB操作桌面简介
1.MATLAB的缺省外貌
上图为MATLAB6.5的缺省外形,界面上铺放着3个最常用的窗口:
命令窗口(CommandWindow)、工作空间(Workspace)、命令历史窗(CommandHistory)。
命令窗口(CommandWindow)是用户和MATLAB进行交互的主要方式。
命令窗口显示的提示符为“>>”,一般可以在命令窗口中直接进行简单的算术运算和函数调用。
2.MATLAB语句形式
》变量=表达式
通过等号“=”将表达式的值赋予变量。
当键入回车键时,该语句被执行。
语句执行之后,窗口自动显示出语句执行的结果。
如果希望结果不被显示,则只要在语句之后加上一个分号“;”即可。
此时尽管结果没有显示,但它依然被赋值并在MATLAB工作空间中分配了内存。
注意:
MATLAB中所有符号必须在英文状态下输入(汉字除外),而且MATLAB区分字母的大小写。
3.命令窗口(CommandWindow)特殊功能键
命令窗口有一些常用的特殊功能键,利用它们可以使操作更加简单快捷。
常用的特殊功能键如下表所列。
键名
作用
键名
作用
↑或Ctrl+P
恢复前面的命令(即前寻式调回已输入的指令行)
Home
使光标移动到当前行的首端
↓或Ctrl+N
恢复当前命令之后键入的命令(即后寻式调回已输入的指令行)
End
使光标移动到当前行的尾端
←或Ctrl+B
向左移动一个字符
Delete
删除光标右边的字符
→或Ctrl+F
向右移动一个字符
Backspace
删除光标左边的字符
PageUp
前寻式翻阅当前窗中的内容
Esc
清除当前行的全部内容
PageDown
后寻式翻阅当前窗中的内容
Ctrl+K
删除至当前行尾
三.命令窗口菜单(CommandWindow)简介
1、File菜单
New:
用于新建M编程文件、Figure图形文件和GUI图形界面操作文件,还可以根据自己需要来建立相应的文件。
Open:
用于打开MATLAB的相关文件。
CloseCommandWindow:
用于关闭命令窗口。
SetPath:
设置所编辑文件的工作路径。
2、Edit菜单
Undo:
撤消前一步操作。
Redo:
重新执行前一步操作。
ClearCommandWindow:
清除命令窗口的对象。
ClearCommandHistory:
清除命令窗口的历史记录。
ClearWorkspace:
清除工作区环境的对象。
3、View:
菜单
DesktopLayout:
用于设置工作区,设置选项有系统的默认设置项(Default)、单独命令窗口项(CommandWindowOnly)、简洁窗口项(Simple)、长短历史窗口项(ShortHistory和TallHistory)和五个窗口面板显示(FivePanel)。
CommandWindow:
命令窗口项,选择该项,屏幕上显示命令窗口。
CommandHistory:
命令历史窗口项,选择该项,屏幕上显示命令窗口。
CommandDirectory:
当前路径窗口项,选择该项,屏幕上显示当前路径窗口。
Workspace:
工作区域窗口,选择该项,屏幕上显示工作区域窗口。
Help:
帮助面板,选择该项,屏幕上此窗口。
四.MATLAB的基本操作命令
1.窗口命令
clf:
该命令用于清除图形窗口中的所有非隐蔽的图形对象。
close:
该命令用于关闭当前的图形窗口。
closeall:
该命令用于关闭所有的图形窗口。
cla:
该命令用于清除当前坐标系下的所有非隐蔽图形对象。
clc:
该命令用于命令窗口中的内容,光标将回到窗口的左上角。
home:
该命令用于将光标回到窗口的左上角。
2.工作空间管理命令
who:
该命令用于列出当前工作区间的所有变量。
whos:
该命令用于列出当前工作区间的所有变量,并显示变量的大小、类型及其占用的磁盘空间。
clear:
该命令用于从工作区间清除所有的变量。
workspace:
该命令用于显示Workspace浏览器。
quit:
该命令用于MATLAB软件。
3.文件路径编辑命令
path:
该命令用于显示所有的MATLAB文件路径。
addpath:
该命令用于将一个新目录名添加到的搜索路径里,其调用格式为addpath('directory')。
4.操作系统命令
cd:
该命令用于显示当前工作目录名。
cd〈目录〉:
该命令用于进入所指定的目录。
cd…:
该命令用于回到上一级目录。
dir〈目录名〉:
该命令用于显示指定目录中的文件及其子目录。
5.系统帮助命令
help:
该命令用于在命令窗口中显示MATLAB函数的帮助信息。
lookfor:
该命令用于搜索指定的目录文件或函数。
ver:
该命令用于显示MATLAB版本。
五.变量
1、变量的命名
变量的名字必须以字母开头(不能超过19个字符),之后可以是任意字母、数字或下划线;变量名称区分字母的大小写;变量中不能包含有标点符号。
2、MATLAB所定义的特殊变量及其意义
变量名
意义
ans
用于结果的缺省变量名
i或j
基本虚数单位(即
)
who
列出所有定义过的变量名称
ans
最近的计算结果的变量名(即answer的缩写)
eps
MATLAB定义的正的极小值=2.2204e-16
pi
圆周率π值3.14159265...
inf
∞值,无限大,如1/0
NaN或nan
非数(NotANumber),如0/0
nargin
函数的输入变量个数
nargout
函数的输出变量个数
3、变量操作
在命令窗口中,同时存储着输入的命令和创建的所有变量值,它们可以在任何需要的时候被调用。
如要察看变量a的值,只需要在命令窗口中输入变量的名称即可:
》a
六.MATLAB的矩阵运算
1.矩阵的建立
●在命令窗口中输入
矩阵的输入必须有以下3个要素:
①输入矩阵必须以方括号“[]”作为其头尾;
②矩阵行与行之间必须用分号“;”或在输入完一行之后直接用回车键【Enter】隔离;
③矩阵元素必须以逗号“,”或空格号分离。
●语句生成
①用线性等间距生成向量矩阵(start:
step:
end)
其中start为起始值,step为步长,end为终止值。
当步长为1时可省略step参数;另外step也可以取负数。
例1:
用线性等间距生成向量矩阵
》a=[1:
2:
10]
a=
13579
②a=linspace(n1,n2,n)
在线性空间上,行矢量的值从n1到n2,数据个数为n,缺省n为100。
例2:
用linspace生成向量矩阵
》a=linspace(1,10,10)
a=
12345678910
③a=logspace(n1,n2,n)
在对数空间上,行矢量的值从
到
,数据个数为n,缺省n为50。
这个指令为建立对数频域轴坐标提供了方便。
例3:
用logspace生成向量矩阵
》a=logspace(1,3,3)
a=
101001000
2.一些常用的特殊矩阵
单位矩阵:
eye(m,n);eye(m)。
空矩阵:
用“[]”来表示,其大小为零,但变量名和维数存在于工作空间内。
零矩阵:
zeros(m,n);zeros(m)。
全1矩阵:
ones(m,n);ones(m)。
对角矩阵:
对角元素向量V=[a1,a2,…,an],A=diag(V)。
随机矩阵:
rand(m,n)产生一个m×n的均匀分别的随机矩阵
例4:
生成常用的特殊矩阵
》eye(2,3)
ans=
100
010
》zeros(2,3)
ans=
000
000
》ones(2,3)
ans=
111
111
》eye
(2)
ans=
10
01
》zeros
(2)
ans=
00
00
》ones
(2)
ans=
11
11
》V=[572];A=diag(V)
A=
500
070
002
如果已知A为方阵,则V=diag(A)可以提取A的对角元素构成向量V
3.矩阵基本运算
矩阵与矩阵之间可以进行加(+)、减(-)、乘(*)、除(/或\)、幂(^)、对数(logm)、指数(expm)运算,点运算(.^)是两个维数相同矩阵对应元素之间的运算。
两矩阵相加减,要求两矩阵具有相同的行数,相同的列数。
只有当两个矩阵中前一个矩阵的列数和后一个矩阵的行数相同时,才可以进行乘法运算。
a\b运算等效于求a*x=b的解;而a/b等效于求x*b=a的解。
只有方阵才可以求幂。
例5:
矩阵基本运算示例
a=[12;34];b=[35;59]
》c=a+b,d=a-b
》c=
47
813
d=
-2-3
-2-5
》a*b=[1323;2951]
》a/b=[-0.500.50;3.50–1.50]
》a\b=[-1-1;23]
》a^3=[3754;81118]
》a.*b=[310;1536]
》a./b=[0.330.40;0.600.44]
》a.\b=[3.002.50;1.672.25]
》a.^3=[18;2764]
4.矩阵的函数运算
①矩阵的行列式和转置
矩阵的行列式的值可用函数“det([变量名])”来计算;对于实矩阵用“’”符号或“.’”求转置结果是一样的;然而对于含复数的矩阵,则(’)将同时对复数进行共轭处理,而“.’”则只是将其排列形式进行转置。
例6:
求已知矩阵的行列式及其转置
》a=[123;456]'
a=
14
25
36
》a=[123;456].'
a=
14
25
36
》b=[1+2i2-7i]'
b=
1.0000-2.0000i
2.0000+7.0000i
》b=[1+2i2-7i].'
b=
1.0000+2.0000i
2.0000-7.0000i
②矩阵的特征值和特征向量
矩阵的特征值和特征向量的运算可用函数“eig([变量名])”或“eigs([变量名])”来获得。
例7:
求矩阵的特征值和特征向量
>>B=[135;246;7913];[c,d]=eig(B)
运行结果
c=
-0.3008-0.72250.2284
-0.3813-0.3736-0.8517
-0.87420.58170.4717
d=
19.334100
0-1.47440
000.1403
③矩阵的秩和迹
矩阵的秩可用函数“rank([变量名])”来实现,矩阵的迹(矩阵对角元素之和)可用函数“trace([变量名])”来实现。
例8:
求矩阵的秩和迹
>>A=[135;246;7911];B=rank(A),C=trace(A)
B=
2
C=
16
④求逆:
inv(A)
例9:
》a=[123;456;235];
》b=inv(a)
b=
-2.33330.33331.0000
2.66670.3333-2.0000
-0.6667-0.33331.0000
七.矩阵的操作
1、矩阵下标
•MATLAB通过确认矩阵下标,可以对矩阵进行插入子块,提取子块和重排子块的操作。
•A(m,n):
提取第m行,第n列元素
•A(:
,n):
提取第n列元素
•A(m,:
):
提取第m行元素
•A(m1:
m2,n1:
n2):
提取第m1行到第m2行和第n1列到第n2列的所有元素(提取子块)。
•A(:
):
得到一个长列矢量,该矢量的元素按矩阵的列进行排列。
•矩阵扩展:
如果在原矩阵中一个不存在的地址位置上设定一个数(赋值),则该矩阵会自动扩展行列数,并在该位置上添加这个数,而且在其他没有指定的位置补零。
•消除子块:
如果将矩阵的子块赋值为空矩阵[],则相当于消除了相应的矩阵子块。
2、矩阵的大小
•[m,n]=size(A,x):
返回矩阵的行列数m与n,当x=1,则只返回行数m,当x=2,则只返回列数n。
•length(A)=max(size(A)):
返回行数或列数的最大值。
•rank(A):
求矩阵的秩
例10:
》a=[123;345];
》[m,n]=size(a)
m=
2
n=
3
》length(a)
ans=
3
》max(size(a))
ans=
3
》rank(a)
ans=
2
3、了解矩阵操作函数:
flipud;fliplr;rot90
函数“rot90”(逆时针旋转90度)、“fliplr”(左右转置)、“flipud”(上下转置)。
例11:
>>A=[123;456;789]
A=
123
456
789
>>D=rot90(A),E=fliplr(A),F=flipud(A)
D=
369
258
147
E=
321
654
987
F=
789
456
123
八.多项式处理
1、多项式的建立与表示方法
•在MATLAB中,多项式使用降幂系数的行向量表示,如:
多项式
表示为:
p=[1-12025116],使用函数roots可以求出多项式等于0的根,根用列向量表示。
若已知多项式等于0的根,函数poly可以求出相应多项式。
例12:
r=roots(p)
r=
11.7473
2.7028
-1.2251+1.4672i
-1.2251-1.4672i
p=poly(r)
p=
1-12-025116
2、多项式的运算
•相乘conv
a=[123];b=[12]
c=conv(a,b)=1476
conv指令可以嵌套使用,如conv(conv(a,b),c)
•相除deconv
[q,r]=deconv(c,b)
q=123%商多项式
r=000%余多项式
•求多项式的微分多项式polyder
polyder(a)=22
•求多项式函数值polyval(p,n):
将值n代入多项式求解。
polyval(a,2)=11
九.绘图简介
•MATLAB提供了丰富的绘图功能:
helpgraph2d可得到所有画二维图形的命令,helpgraph3d可得到所有画三维图形的命令
下面介绍常用的二维图形命令
1、基本的绘图命令
plot(x1,y1,option1,x2,y2,option2,…)
x1,y1给出的数据分别为x,y轴坐标值,option1为选项参数,以逐点连折线的方式绘制1个二维图形;同时类似地绘制第二个二维图形等。
这是plot命令的完全格式,在实际应用中可以根据需要进行简化。
比如:
plot(x,y);plot(x,y,option)。
选项参数option定义了图形曲线的颜色、线型及标示符号,它由一对单引号括起来。
2、选择图像
figure
(1);figure
(2);…;figure(n)
打开不同的图形窗口,以便绘制不同的图形
3、gridon:
在所画出的图形坐标中加入栅格
gridoff:
除去图形坐标中的栅格。
4、holdon:
把当前图形保持在屏幕上不变,同时允许在这个坐标内绘制另外一个图形。
holdoff:
使新图覆盖旧的图形
5、设定轴的范围
axis([xminxmaxyminymax])
axis(‘equal’):
将x坐标轴和y坐标轴的单位刻度大小调整为一样。
6、文字标示
•text(x,y,’字符串’)
在图形的指定坐标位置(x,y)处,标示单引号括起来的字符串。
•gtext(‘字符串’)
利用鼠标在图形的某一位置标示字符串。
•title(‘字符串’)
在所画图形的最上端显示说明该图形标题的字符串。
•xlabel(‘字符串’),ylabel(‘字符串’)
设置x,y坐标轴的名称。
•输入特殊的文字需要用反斜杠(\)开头。
7、legend(‘字符串1’,‘字符串2’,…,‘字符串n’)
•在屏幕上开启一个小视窗,然后依据绘图命令的先后次序,用对应的字符串区分图形上的线。
8、subplot(mnk):
分割图形显示窗口
m:
上下分割个数,n:
左右分割个数,k:
子图编号
9、semilogx:
绘制以x轴为对数坐标(以10为底),y轴为线性坐标的半对数坐标图形。
semilogy:
绘制以y轴为对数坐标(以10为底),x轴为线性坐标的半对数坐标图形。
一十.字符串及其宏命令
①字符串要用单引号并用括号括在里面。
如:
》disp(‘textstring’)%disp字符串显示命令
textstring
②在单引号里边的字符串可以作为矢量或矩阵的元素。
使用disp命令或输入变量名就可以显示它们表示的字符串。
如:
》a=['thisisa';'textstring']
?
?
?
Allrowsinthebracketedexpressionmusthavethesamenumberofcolumns.(元素1含9个字符,包括空格;元素2含有11个字符;因此只要在元素1中加入2个空格即可解决问题)
》aa=['thisisa';'textstring'],disp(aa)
aa=
thisisa
textstring
③宏是MATLAB语言用在常用命令部分的缩写。
它可以被存储用于建立M文件的一部分。
宏命令采用字符串,并使用eval命令去执行宏命令。
下例是采用宏命令计算阶乘的例子。
》fct=‘prod(1:
n)’;%求10的阶乘
》n=10;eval(fct)
ans=3628800
一十一.关系与逻辑运算符
MATLAB的运算符有三种类型:
算术运算符、关系运算符、逻辑运算符。
它们的处理顺序依次为算术运算符、关系运算符、逻辑运算符。
1、关系运算符:
<小于、>大于、<=小于等于、>=大于等于、==等于、~=不等于
假设有:
A=[12-1-5]、B=[0231]
AA>Bans=[1000]A>1ans=[0100]
A<=Bans=[0111]A>=Bans=[1100]
A=Bans=[0100]A=1ans=[1000]
A~=Bans=[1011]A~=1ans=[0111]
2、逻辑运算符:
&与、|或、~非
注意:
在处理逻辑运算时,运算元只有两个值即0和1,所以如果指定的数为0,MATLAB认为其为0,而任何数不等于0,则认为是1。
设有:
A=[5-40-0.5],B=[0109]
A&B=[0101],A&1=[1101],A|B=[1101],A|1=[1111]
~A=[0010],~1=0
一十二.程序流程控制
1、for循环语句
基本格式
for循环变量=起始值:
步长:
终止值
循环体;
end
其中:
步长缺省值为1,可以在正实数或负实数范围内任意指定。
对于正数,循环变量的值大于终止值时,循环结束;对于负数,循环变量的值小于终止值时,循环结束。
循环结构可以嵌套使用。
2、while循环语句
基本格式
while表达式
循环体;
end
若表达式为真,则执行循环体的内容,执行后再判断表达式是否为真,若不为真,则跳出循环体,向下继续执行。
While循环和for循环的区别在于,while循环结构的循环体被执行的次数不是确定的,而for结构中循环体的执行次数是确定的。
3、if,else,elseif语句
①if逻辑表达式
执行语句
end
②if逻辑表达式
执行语句1
else
执行语句2
end
③if逻辑表达式1
执行语句1
elseif逻辑表达式2
执行语句2
end
•if-else的执行方式为:
如果逻辑表达式的值为真,则执行语句1,然后跳过语句2,向下执行;如果为假,则执行语句2,然后向下执行。
•if-elseif的执行方式为:
如果逻辑表达式1的值为真,则执行语句1;如果为假,则判断逻辑表达式2,如果为真,则执行语句2,否则向下执行。
4、switch语句
格式:
switch表达式(%可以是标量或字符串)
case值1
语句1
case值2
语句2
….
otherwise
语句3
end
执行方式:
表达式的值和哪种情况(case)的值相同,就执行哪种情况中的语句,如果不同,则执行otherwise中的语句。
格式中也可以不包括otherwise,这时如果表达式的值与列出的各种情况都不相同,则继续向下执行。
第二节控制系统的分析方法
一、控制系统的稳定性分析
1、系统稳定及最小相位系统判据
对于连续时间系统,如果闭环极点全部在S平面左半平面,则系统是稳定的。
对于离散时间系统,如果系统全部极点都位于Z平面的单位圆内,则系统是稳定的。
若连续时间系统的全部零极点都位于S左半平面;或若离散时间系统的全部零极点都位于Z平面单位圆内,则系统是最小相位系统。
2、系统稳定及最小相位系统的判别方法
劳斯判据:
劳斯表中第一列各值严格为正,则系统稳定,如果劳斯表第一列中出现小于零的数值,系统不稳定。
MATLAB提供了直接求取系统所有零极点的函数,因此可以直接根据零极点的分布情况对系统的稳定性及是否为最小相位系统进行判断。
二、控制系统的时域分析
1、时域分析的一般方法
一个动态系统的性能常用典型输入作用下的响应来描述。
响应是指零初始值条件下某种典型的输入函数作用下对象的响应,控制系统常用的输入函数为单位阶跃函数和脉冲激励函数(即冲激函数)。
在MATLAB的控制系统工具箱中提供了求取这两种输入下系统响应的函数。
●求取系统单位阶跃响应:
step()
①y=step(num,den,t):
其中num和den分别为系统传递函数描述中的分子和分母多项式系数,t为选定的仿真时间向量,一般可以由t=0:
step:
end等步长地产生出来。
该函数返回值y为系统在仿真时刻各个输出所组成的矩阵。
②[y,x,t]=step(num,den):
此时时间向量t由系统模型的特性自动生成,状态变量x返回为空矩阵。
③[y,x,t]=step(A,B,C,D,iu):