线性系统理论相关的matlab应用
- 格式:docx
- 大小:313.21 KB
- 文档页数:54
使用Matlab进行线性系统辨识与控制的技巧引言:线性系统辨识和控制是现代控制理论和工程应用中的重要内容。
Matlab作为一种强大的数学计算和编程软件,为我们提供了丰富的工具和函数,方便了线性系统辨识与控制的实现。
本文将介绍一些使用Matlab进行线性系统辨识与控制的技巧。
一、线性系统辨识1. 数据采集与预处理对于线性系统辨识,首先需要采集系统的输入输出数据。
在Matlab中可以使用内置函数来进行数据采集,如"sim"函数进行仿真实验,或者使用数据采集卡等外部设备来获取现实世界中的数据。
采集到的数据通常需要进行预处理,如去除噪声、滤波或数据归一化等。
在Matlab中有丰富的信号处理工具箱,可以方便地进行数据预处理。
2. 系统模型的选择线性系统辨识的目标是找到一个数学模型来描述实际系统的动态行为。
在选择系统模型时,可以根据应用需求选择合适的模型种类,如ARX模型、ARMA模型、ARMAX模型等。
在Matlab中,可以使用System Identification Toolbox来进行系统模型的选择和参数估计。
这个工具箱提供了多种模型结构和参数估计算法,方便用户根据系统特性进行模型的选择。
3. 参数估计与模型验证在选择好系统模型后,需要进行参数估计和模型验证。
在Matlab中,可以使用System Identification Toolbox中的函数来进行参数估计,如"armax"函数和"arx"函数等。
参数估计结果可以通过模型验证来评估模型的拟合程度和预测性能。
Matlab中的"compare"函数可以绘制真实输出和模型输出的对比曲线,帮助用户评估模型的准确性。
二、线性系统控制1. 控制器设计线性系统控制的目标是设计一个控制器来使得系统达到所期望的性能要求。
在Matlab中,可以使用Control System Toolbox来进行控制器设计。
线性系统理论Matlab实验报告1、本题目是在已知状态空间描述的情况下要求设计一个状态反馈控制器,从而使得系统具有实数特征根,并要求要有一个根的模值要大于5,而特征根是正数是系统不稳定,这样的设计是无意义的,故而不妨设采用状态反馈后的两个期望特征根为-7,-9,这样满足题目中所需的要求。
(1)要对系统进行状态反馈的设计首先要判断其是否能控,即求出该系统的能控性判别矩阵,然后判断其秩,从而得出其是否可控;判断能控程序设计如下:>> A=[-0.8 0.02;-0.02 0];B=[0.05 1;0.001 0];Qc=ctrb(A,B)Qc =0.0500 1.0000 -0.0400 -0.80000.0010 0 -0.0010 -0.0200Rc=rank(Qc)Rc =2Qc =0.0500 1.0000 -0.0400 -0.80000.0010 0 -0.0010 -0.0200得出结果能控型判别矩阵的秩为2,故而该系统是完全可控的,故可以对其进行状态反馈设计。
(2)求取状态反馈器中的K,设的期望特征根为-7,-9;其设计程序如下:>> A=[-0.8 0.02;-0.02 0];B=[0.05 1;0.001 0];P=[-7 -9];k=place(A,B,P)k =1.0e+003 *-0.0200 9.00000.0072 -0.4500程序中所求出的k即为所求状态反馈控制器的状态反馈矩阵,即由该状态反馈矩阵所构成的状态反馈控制器能够满足题目要求。
2、(a)要求求该系统的能控型矩阵,并验证该系统是不能控的。
设计程序:>> A=[0 1 0 0 0;-0.1 -0.5 0 0 0;0.5 0 0 0 0;0 0 10 0 0;0.5 1 0 0 0];>> B=[0;1;0;0;0];>> C=[0 0 0 1 0];>> Qc=ctrb(A,B)Qc =0 1.0000 -0.5000 0.1500 -0.02501.0000 -0.5000 0.1500 -0.0250 -0.00250 0 0.5000 -0.2500 0.07500 0 0 5.0000 -2.50000 1.0000 0 -0.1000 0.0500>> Rc=rank(Qc)Rc =4从程序运行的结果可得,系统能控型判别矩阵的秩为4,而系统为5阶系统,故而就验证了该系统为不可控的。
实验二 LTI 系统的响应一、实验目的1. 熟悉连续时间系统的单位冲激响应、阶跃响应的意义及求解方法2. 熟悉连续(离散)时间系统在任意信号激励下响应的求解方法3. 熟悉应用MATLAB 实现求解系统响应的方法 二、实验原理 1.连续时间系统对于连续的LTI 系统,当系统输入为f(t),输出为y(t),则输入与输出之间满足如下的线性常系数微分方程:()()00()()nmi j ij i j a yt b f t ===∑∑,当系统输入为单位冲激信号δ(t)时产生的零状态响应称为系统的单位冲激响应,用h(t)表示。
若输入为单位阶跃信号ε(t)时,系统产生的零状态响应则称为系统的单位阶跃响应,记为g(t),如下图所示。
系统的单位冲激响应h(t)包含了系统的固有特性,它是由系统本身的结构及参数所决定的,与系统的输入无关。
我们只要知道了系统的冲激响应,即可求得系统在不同激励下产生的响应。
因此,求解系统的冲激响应h(t)对我们进行连续系统的分析具有非常重要的意义。
在MATLAB 中有专门用于求解连续系统冲激响应和阶跃响应, 并绘制其时域波形的函数impulse( ) 和step( )。
如果系统输入为f(t),冲激响应为h(t),系统的零状态响应为y(t),则有:()()()y t h t f t =*。
若已知系统的输入信号及初始状态,我们便可以用微分方程的经典时域求解方法,求出系统的响应。
但是对于高阶系统,手工计算这一问题的过程非常困难和繁琐。
在MATLAB 中,应用lsim( )函数很容易就能对上述微分方程所描述的系统的响应进行仿真,求出系统在任意激励信号作用下的响应。
lsim( )函数不仅能够求出连续系统在指定的任意时间范围内系统响应的数值解,而且还能同时绘制出系统响应的时域波形图。
以上各函数的调用格式如下: ⑴ impulse( ) 函数 函数impulse( )将绘制出由向量a 和b 所表示的连续系统在指定时间范围内的单位冲激响应h(t)的时域波形图,并能求出指定时间范围内冲激响应的数值解impulse(b,a) 以默认方式绘出由向量a 和b 所定义的连 统的冲激响应的时域波形。
基于MATLAB的线性系统稳定性分析及应用线性系统稳定性分析及应用是控制理论中的重要内容之一、MATLAB是一种强大的数学计算工具,可以用于线性系统的稳定性分析和应用。
本文将介绍线性系统稳定性分析的基本理论,以及如何使用MATLAB进行稳定性分析和应用。
一、线性系统稳定性分析基本理论1.线性系统稳定性定义:线性系统是指系统的输入和输出满足线性关系的系统。
线性系统稳定性是指当系统的输入有界时,系统输出也是有界的,不会发散或震荡。
2.线性时不变系统:线性时不变系统是指系统的特性不随时间变化而变化,可以通过线性时间不变微分方程来描述。
3.BIBO稳定性:BIBO代表有界输入有界输出,是指当系统的输入信号是有界的时候,系统输出也是有界的。
BIBO稳定性是判断线性系统稳定性的一种方法。
4.线性系统稳定性判据:-零输入稳定性(ZIS):当系统的输入为零时,系统输出是否趋于零,来判断系统的稳定性。
-零状态稳定性(ZSS):当系统的初始状态为零时,系统输出是否趋于零,来判断系统的稳定性。
-有界输入有界输出稳定性(BIBO稳定性):当系统的输入信号是有界的时,系统输出是否有界,来判断系统的稳定性。
二、MATLAB线性系统稳定性分析方法1. 频率域法:通过计算系统的传递函数的频率响应来分析系统的稳定性。
MATLAB提供了函数freqresp来计算系统的频率响应,并可以使用bode函数来绘制频率响应曲线。
2. 极点分析法:通过分析系统的极点位置来判断系统的稳定性。
MATLAB提供了函数pole来计算系统的极点,并可以使用pzmap函数来绘制极点分布图。
3.等价传递函数法:将系统的状态空间方程转化为等价的传递函数形式,然后通过分析传递函数的特性来判断系统的稳定性。
MATLAB提供了ss2tf函数来将状态空间方程转化为传递函数形式。
三、MATLAB线性系统稳定性应用1.控制系统设计:将线性系统的稳定性分析方法应用于控制系统的设计中,可以通过稳定性判据来选择合适的控制策略,以保证系统的稳定性。
§1 线性规划在人们的生产实践中,经常会遇到如何利用现有资源来安排生产,以取得最大经济效益的问题。
此类问题构成了运筹学的一个重要分支—数学规划,而线性规划(Linear Programming 简记LP)则是数学规划的一个重要分支。
自从1947年G. B. Dantzig 提出求解线性规划的单纯形方法以来,线性规划在理论上趋向成熟,在实用中日益广泛与深入。
特别是在计算机能处理成千上万个约束条件和决策变量的线性规划问题之后,线性规划的适用领域更为广泛了,已成为现代管理中经常采用的基本方法之一。
1.1 线性规划的实例与定义 例1 某机床厂生产甲、乙两种机床,每台销售后的利润分别为4000元与3000元。
生产甲机床需用B A 、机器加工,加工时间分别为每台2小时和1小时;生产乙机床需用C B A 、、三种机器加工,加工时间为每台各一小时。
若每天可用于加工的机器时数分别为A 机器10小时、B 机器8小时和C 机器7小时,问该厂应生产甲、乙机床各几台,才能使总利润最大?上述问题的数学模型:设该厂生产1x 台甲机床和2x 乙机床时总利润最大,则21,x x 应满足(目标函数)2134m ax x x z += (1)s.t.(约束条件)⎪⎪⎩⎪⎪⎨⎧≥≤≤+≤+0,781022122121x x x x x x x (2)这里变量21,x x 称之为决策变量,(1)式被称为问题的目标函数,(2)中的几个不等式是问题的约束条件,记为s.t.(即subject to)。
上述即为一规划问题数学模型的三个要素。
由于上面的目标函数及约束条件均为线性函数,故被称为线性规划问题。
总之,线性规划问题是在一组线性约束条件的限制下,求一线性目标函数最大或最小的问题。
在解决实际问题时,把问题归结成一个线性规划数学模型是很重要的一步,但往往也是困难的一步,模型建立得是否恰当,直接影响到求解。
而选取适当的决策变量,是我们建立有效模型的关键之一。
MATLAB在线性系统理论中的应⽤MATLAB在线性系统理论中的应⽤第⼀章传递函数与状态空间表达式1.1 传递函数与状态空间表达式之间的转换⽤ss命令来建⽴状态空间模型。
对于连续系统,其格式为sys=ss(A,B,C,D),其中a,b,c,d 为描述线性连续系统的矩阵。
当sys1是⼀个⽤传递函数表⽰的线性定常系统时,可以⽤命令sys=ss(sys1)将其转换成为状态空间形式,也可以⽤命令sys=ss(sys1,’min’)计算出系统sys的最⼩实现。
example1:系数传递函数到状态空间表达式>>num=[1 7 24 24];den=[1 10 35 50 24];g=tf(num,den);sys=ss(g)the answer is:a =x1 x2 x3 x4x1 -10 -4.375 -3.125 -1.5x2 8 0 0 0x3 0 2 0 0x4 0 0 1 0b =u1x1 2x2 0x3 0x4 0c =x1 x2 x3 x4y1 0.5 0.4375 0.75 0.75d =u1y1 0Continuous-time model.example2:由传递函数系数,将离散系统脉冲传递函数模型转换成状态空间表达式>>num=[0.31 0.57 0.38 0.89];den=[1 3.23 3.98 2.22 0.47];Transfer function:0.31 z^3 + 0.57 z^2 + 0.38 z + 0.89-----------------------------------------z^4 + 3.23 z^3 + 2.98 z^2 + 2.22 z + 0.47Sampling time: 0.1Pzmap(gyu)%绘制零极点分布图sys=ss(gyu)%将离散系统脉冲传递函数模型转换成状态空间表达式。
The answer is:a =x1 x2 x3 x4x1 -3.23 -1.49 -1.11 -0.235x2 2 0 0 0x3 0 1 0 0x4 0 0 1 0b =u1x1 1x2 0x3 0x4 0c =x1 x2 x3 x4y1 0.31 0.285 0.19 0.445d =u1Discrete-time model.Example 3:⽤s求逆矩阵法从系统矩阵a,b,c,d求得传递函数>>syms s;a=[0 1;-2 -3];b=[1 0;1 1 ];c=[2 1;1 1;-2 -1];d=[3 0;0 0;0 1];i=[1 0;0 1];f=inv(s*i-a)g=simple(simple(c*f*b)+d)The answer is:f =[ (s+3)/(s^2+3*s+2), 1/(s^2+3*s+2)][ -2/(s^2+3*s+2), s/(s^2+3*s+2)]g =[ 3/(s+1)+3, 1/(s+1)][ 2/(s+2), 1/(s+2)][ -3/(s+1), -1/(s+1)+1]Example 4 eig()指令,求特征根矩阵和特征向量矩阵函数eig()Example 5 约旦标准型函数jordan()>> a=[0 1 0;0 0 1;2 -5 4]a =0 1 00 0 12 -5 4>> [q,j]=jordan(a)q =1 -2 02 -2 -24 -2 -4j =2 0 00 1 1a=[0 1 0;0 0 1;-6 -11 -6];b=[0;0;1];c=[ 1 1 1];d=[0];v=ss(a,b,c,d)[num,den]=ss2tf(a,b,c,d);printsys(num,den)[z,p,k]=ss2zp(a,b,c,d);zpk(z,p,k)x0=[2;0;1];figure(1)step(v)figure(2)initial(v,x0)t=0:0.1:60;u=t;figure(3)lsim(v,u,t);%figure(3)第⼆章状态转移矩阵与状态⽅程的解Example 1Collect函数的作⽤是合并同类项,ilaplace()函数的作⽤的求取laplace反变换,函数det ()的作⽤是求⽅阵的⾏列式。
实验一 MATLAB 线性系统建模及分析一、实验目的1、 学会在matlab 中建立线性系统的数学模型。
2、 学会线性系统的simulink 模型的建立方法。
3、 学会用MATLAB 求解线性定常系统的输出响应,并绘制相应的曲线。
4、 学会用MATLAB 判断系统的稳定性、计算性能指标、分析系统的动态性能和稳态性能。
5、 学会用Matlab 绘制根轨迹,并由根轨迹分析系统性能。
6、 学会用Matlab 绘制奈奎斯特图和伯德图,并计算开环频域指标,对系统性能进行频域分析。
二、实验环境安装有MATLAB 和simulink 软件的计算机一台三、实验内容3.1 线性系统的数学模型的建立1、传递函数和脉冲传递函数的建立已知系统的传递函数为(a) 3486)(22++++=s s s s s G (b) )3()1(4)(2++=s s s s G (c) 61161)(232+++++=z z z z z z G (1)利用函数tf ( )或函数zpk( )建立上述系统的传递函数。
(2)利用函数zpk( )将多项式比值形式的传递函数转换为零极点形式,利用函数tf ( )将零极点形式的传递函数转换为多项式比值形式。
2、组合系统的传递函数已知两个子系统的传递函数为441)(21+++=ssssG21()1G ss=+建立两个子系统的传递函数模型。
求它们串联、并联、反馈连接时, 组合系统的传递函数模型。
3、 simulink模型的建立已知系统的开环传递函数为2()(4)G ss s=+建立单位负反馈系统的simulink模型,其中输入信号为单位阶跃函数,输出通过示波器观测。
仿真,并记录simulink模型和响应曲线。
系统的建模图形如下点击运行,后点击示波器,系统的响应曲线如下2.2 线性系统的时域分析1、已知系统的传递函数为326()4106G ss s s=+++(1)当初始状态为零,输入为时,用函数step( )求解系统的输出响应的数值解(记录写出前十个值),并绘制系统的输出响应曲线。
实验报告课程线性系统理论基础实验日期年月日专业班级姓名学号同组人实验名称控制工具箱的应用及线性系统的运动分析评分批阅教师签字一、实验目的1、学习掌握控制工具箱中的基本命令的操作方法;2、掌握线性系统的运动分析方法。
二、实验内容(1)自选控制对象模型,应用以下命令,并写出结果。
1)2, 2, 2, 2;2)2, , , 。
(2)掌握线性系统的运动分析方法1)已知,求Ate。
(用三种方法求解)2) 利用求解书上例2.8题,并画出状态响应和输出响应曲线,求解时域性能指标。
(加图标题、坐标轴标注及图标)3) 利用求解书上例2.12题([]c=),并画出状态10响应和输出响应曲线。
(加图标题、坐标轴标注及图标)4) P36 1.4(2) 1.5(3);P56 2.3(3)三、实验环境1、计算机120台;2、6软件1套。
四、实验原理(或程序框图)及步骤1、学习掌握控制工具箱中基本命令的操作设系统的模型如式(1-1)所示:p m n R y R u R x Du Cx y Bu Ax x ∈∈∈⎩⎨⎧+=+= (1-1)其中A 为n ×n 维系数矩阵;B 为n ×m 维输入矩阵;C 为p ×n 维输出矩阵;D 为p ×m 维传递矩阵,一般情况下为0。
系统的传递函数阵和状态空间表达式之间的关系如式(1-2)所示:D B A sI C s den s num s G +-==-1)()()(()( (1-2)式(1-2)中,)(s num 表示传递函数阵的分子阵,其维数是p ×m ;)(s den 表示传递函数阵的分母多项式,按s降幂排列的后,各项系数用向量表示。
五、程序源代码(1)自选控制对象模型,应用以下命令,并写出结果。
1), , , , , , , ;(系统单位阶跃响应)程序:[1,4];[1,2,8];(计算系统模型的固有频率)程序:[1];[1,10,10];[w ]()w =3.87303.87300.64550.6455:(绘制连续系统的零极点图)程序:H = ([1 -1 3],[2 1 -1]);(H):(求系统根轨迹)程序:[0 0 0 1];([1 0],[1 4(-1)]);(,[1 4(-1)]);[-4 1 -2 2];: 确定闭环根位置对应增益值K的函数()程序:([1,5,6],[1,8,3,25]);(G);[](G)(G,1);: 计算给定线性系统的伯德图程序:[1,4];[1,2,8];:从频率响应数据中计算出幅值裕度、相角裕度以及对应的频率[4];[1 2 1];0.1:1000;:绘制系统奈氏图[0 0 1 1];[1 2 0 0];2)2, 2, 2, 2;2:传递函数阵转换为状态空间模型[0 1 5 3];[1 2 3 4];[]2()A =-2 -3 -41 0 00 1 0B =1C =1 5 3D =2:状态空间模型转换为状态空间[0 1 0;0 0 14 -3 -2];[1;36];[1 0 0];0;[]2(,1)0 1.0000 5.0000 3.00001.00002.00003.00004.00002:将系统的传递函数形式转换为零点,极点,增益形式[0 1 5 3];[1 2 3 4];[z111]2()z1 =-4.3028-0.6972p1 =-1.6506 + 0.0000i-0.1747 + 1.5469i-0.1747 - 1.5469ik1 =12:将系统零极点形式转换为传递函数形式[-2 -3];[0135];3;[]2()A =-8.0000 -3.8730 0 0 3.8730 0 0 0 -3.0000 -2.3238 -1.0000 00 0 1.0000 0B =11C =0 0 0 3D =3)2, , , 。
MATLAB中的数学建模方法及应用引言数学建模作为一门重要的学科,已经成为了现代科学研究和工程实践中不可或缺的一部分。
而在数学建模过程中,数值计算和数据分析是关键步骤之一。
MATLAB作为一种强大的数学计算软件,在数学建模领域得到了广泛应用。
本文将介绍MATLAB中常用的数学建模方法,并探讨一些实际应用案例。
一、线性模型线性模型是数学建模中最基础的一种模型,它假设系统的响应是线性的。
在MATLAB中,我们可以通过矩阵运算和线性代数的知识来构建和求解线性模型。
例如,我们可以使用MATLAB中的线性回归函数来拟合一条直线到一组数据点上,从而得到一个线性模型。
二、非线性模型与线性模型相对应的是非线性模型。
非线性模型具有更强的表达能力,可以描述更为复杂的系统。
在MATLAB中,我们可以利用优化工具箱来拟合非线性模型。
例如,我们可以使用MATLAB中的非线性最小二乘函数来优化模型参数,使得模型与实际数据拟合程度最好。
三、微分方程模型微分方程模型在科学研究和工程实践中广泛应用。
在MATLAB中,我们可以使用ODE工具箱来求解常微分方程(ODE)。
通过定义初始条件和微分方程的表达式,MATLAB可以使用多种数值方法来求解微分方程模型。
例如,我们可以利用MATLAB中的欧拉法或者龙格-库塔法来求解微分方程。
四、偏微分方程模型偏微分方程(PDE)模型是描述空间上的变化的数学模型。
在MATLAB中,我们可以使用PDE工具箱来求解常见的偏微分方程模型。
通过定义边界条件和初始条件,MATLAB可以通过有限差分或有限元等方法来求解偏微分方程模型。
例如,我们可以利用MATLAB中的热传导方程求解器来模拟物体的温度分布。
五、曲线拟合与数据插值曲线拟合和数据插值是数学建模过程中常见的任务。
在MATLAB中,我们可以使用拟合和插值工具箱来实现这些任务。
通过输入一系列数据点,MATLAB可以通过多项式拟合或者样条插值等方法来生成一个模型函数。
实验二用MATLAB实现线性系统的频域分析[实验目的]1.掌握MATLAB平台下绘制典型环节及系统开环传递函数的Bode图和Nyquist图(极坐标图)绘制方法;2.掌握利用Bode图和Nyquist图对系统性能进行分析的理论和方法。
[实验指导]一、绘制Bode图和Nyquist图1.Bode图绘制采用bode()函数,调用格式:①bode(sys);bode(num,den);系统自动地选择一个合适的频率范围。
②bode(sys,w);其中w(即ω)是需要人工给出频率范围,一般由语句w=logspace(a,b,n)给出。
logspace(a,b,n):表示在10a到10b之间的 n个点,得到对数等分的w值。
③bode(sys,{wmin,wmax});其中{wmin,wmax}是在命令中直接给定的频率w的区间。
以上这两种格式可直接画出规范化的图形。
④[mag,phase,ω]=bode(sys)或[m,p]=bode(sys)这种格式只计算Bode图的幅值向量和相位向量,不画出图形。
m为频率特性G(jω )的幅值向量;p为频率特性G(jω )的幅角向量,单位为角度(°)。
w为频率向量,单位为[弧度]/秒。
在此基础上再画图,可用:subplot(211);semilogx(w,20*log10(m) %对数幅频曲线subplot(212);semilogx(w,p) %对数相频曲线⑤bode(sys1,sys2,…,sysN) ;⑥bode((sys1,sys2,…,sysN,w);这两种格式可在一个图形窗口同时绘多个系统的bode图。
2. Nyquist曲线的绘制采用nyquist()函数调用格式:① nyquist(sys) ;② nyquist(sys,w) ;其中频率范围w由语句w=w1:Δw:w2确定。
③nyquist(sys1,sys2,…,sysN) ;④nyquist(sys1,sys2,…,sysN,w);⑤ [re,im,w]=nyquist(sys) ;re—频率响应实部im—频率响应虚部使用命令axis()改变坐标显示范围,例如axis([-1,1.5,-2,2])。
实验三线性控制系统的MATLAB时域分析线性控制系统是指其数学模型是线性微分方程的控制系统。
在工程实践中,我们经常使用MATLAB进行线性控制系统的时域分析。
本实验将介绍如何利用MATLAB进行线性控制系统的时域分析。
首先我们需要创建一个线性控制系统的数学模型。
我们可以使用MATLAB的控制系统工具箱来实现这一点。
在命令窗口中输入"controlSystemDesigner",然后按回车键打开控制系统设计工具。
在控制系统设计工具中,我们可以选择不同的方式来创建一个线性控制系统。
例如,我们可以选择传递函数方式、状态空间方式或者输入输出方式。
在本实验中,我们将使用传递函数方式来创建一个线性控制系统。
在传递函数方式下,我们需要输入系统的传递函数。
传递函数通常由系统的输入、输出以及系统的传递特性来表示。
例如,一个传递函数可以写成G(s)=(s+1)/(s^2+2s+1),其中G(s)是系统的传递函数。
在控制系统设计工具中,我们可以直接输入系统的传递函数。
然后可以选择将系统的输入输出响应绘制在Bode图、Nyquist图或者极点图上。
我们还可以对系统进行稳定性分析和根轨迹分析等。
在确定了线性控制系统的数学模型之后,我们可以使用MATLAB进行时域分析。
在命令窗口中输入"step"命令,然后输入线性控制系统的传递函数,即可绘制出系统的单位阶跃响应图。
我们还可以使用"impulse"命令来绘制系统的单位冲激响应图。
除了绘制系统的响应图之外,我们还可以计算系统的性能指标。
例如,我们可以使用MATLAB的"stepinfo"命令来计算系统的超调量、峰值时间、上升时间和调节时间等性能指标。
此外,MATLAB还提供了一些其他的功能来分析线性控制系统的时域响应。
例如,我们可以使用“ltiview”命令来通过图形界面对系统进行时域分析。
我们还可以使用“margin”和“bode”命令来分析系统的幅频和相频特性。
实验一线性系统的数学模型一、MATLAB基础1、提示符命令窗口:是使用者和MA TLAB交互的地方,使用者输入命令、程序,点击菜单项命令或工具栏按钮,指挥MA TLAB计算、仿真,其结果也都在命令窗口显示。
在提示符后面输入MA TLAB程序,按Enter键,MA TLAB将给出运行结果。
历史窗口:显示所有命令的历史记录,并且标明使用时间。
用鼠标双击其中一条命令行,就可以在命令窗口中执行该命令,MA TLAB将给出运行结果。
用鼠标单击其中的一条命令行,再按Enter键,MA TLAB也将给出运行结果。
工作空间窗口:显示目前内存中所有的MA TLAB变量名、数据结构、字节数以及类型。
发布窗口:点击主窗口的“view”“Launch Pad”,即可打开和关闭发布窗口。
其中显示Mathworks公司的工具箱(Toolbox)、Simulink和功能块(Blockset)等产品信息,点击显示的相应的图标,即可获得演示、帮助信息等信息。
程序编辑器:点击主窗口的“File”“New”“M--file”,即可打开MA TLAB的程序编辑器。
MA TLAB的程序编辑器2、MATLAB在建模仿真中的应用Simulink提供了大量的功能模块以方便用户快速地建立动态系统模型。
建模时只需使用鼠标拖动库中的功能模块并将他们连接起来。
使用者可以通过将他们连接起来。
使用者可以通过将模块组成子系统来建立多级模型。
Simulink对模块和连接的数目没有限制。
通过Simulink 提供的丰富的功能模块,可以迅速地创建系统的模型,不需要书写一行代码。
启动Simulink的方法有三种:1.在MA TLAB COMMAND窗口下,直接键入“Simulink”回车即可;2.单击MA TLAB COMMAND窗口工具条上的Simulink图标;3.在MA TLAB COMMAND窗口菜单上选择file---new-----model运行。
二、常用的函数:1、建立数学模型用到的MA TLAB 函数 (1)、多项式乘法处理函数conv()C=conv(A,B),其中A 、B 为进行相乘的多项式的系数;返回值C为两个多项式相乘后的多项式系数。
控制系统的分析方法>早期的控制系统分析过程复杂而耗时,如想得到一个系统的冲激响应曲线,首先需要编写一个求解微分方程的子程序,然后将已经获得的系统模型输入计算机,通过计算机的运算获得冲激响应的响应数据,然后再编写一个绘图程序,将数据绘制成可供工程分析的响应曲线。
> MATLAB控制系统工具箱和SIMULINK辅助环境的出现, 给控制系统分析带来了福音。
>控制系统的分析包括系统的稳定性分析、时域分析、频域分析及根轨迹分析。
本课件是关于状态空间的时域分析利用MATLAB进行模型转换MATLAB是当今世界上最优秀的科技应用软件之一,它以强大的科学计算能力和可视化功能,简单易用的编程语言以及开放式的编程环境等一些显著的优点,使得它在当今许许多多科学技术领域中成为计算机辅助分析和设计、算法研究和应用开发的基本工具和首选平台。
在本书中,用它作为系统分析和设计的软件平台,更显示出独特的优毎。
本节利用MATLAB实现数学模型的转换。
1 -1传递函数与状态空间表达式之间的转换1).连续系统状态空间表达式可以用ss命令来建立状态空间模型。
对于连续系统,其格式为sys=ss(A5B5C5D),其中A, B, C, D为描述线性连续系统的矩阵。
当sys1是一个用传递函数表示的线性定常系统时,可以用命令sys=ss(sys1),将其转换成为状态空间形式。
也可以用命令sys=ss(sys1/ mirf )计算出系统sys的最小实现。
例1控制系统微分方程为y ⑷ +1 oy + 35》+ 50$ + 24y = u+ lit + 24w + 24u 求其状态空间表达式。
可以先将其转换成传递函数,+7异+24$ + 2454+1053+3552+5054-24输入下列命令num=[l 7 24 24]; den=[l 10 35 50 24]; % 另子"分母多项式G=tf^ den); 菠荻得系统的传递函数模型sys=ss(G;l语句执行结果为b =ul xl 1 x2 0 x3 0 x4 0xl x2 x3 x4 ulyl 1 0.4375 0.3T5 0. 1875 y i oContinuouE-time model.这个结果表示,该系统的状态空间表达式为■-10一2」88-0.7813 -0.1875116000x +004000_ 0020_0_y =0.43750.3750.1875|x + [0]w[l注意,在输入命令中,sys=ss(G)也可以改用[A5B5C5D]=tf2ss(num5den),右本例中其作用和sys=ss(G)近似,也可以计算出矩阵A、B、C、Do2).离散系统的状态空间表达式(不要求)x(k + 1) = Gx伙)+离散系统的状态空间表达式为y(k) = Cr伙)+ du(k)和连续系统状态空间表达式的输入方法相类似,如果要输入离散系统的状态空间表达式,首先需要输入矩阵G、H、C、d, 然后输入语句sw = ss(G,H,CJT),即可将其输入到M ATLAB的workspace中,并且用变量名来表示这个离散系统,其中T为釆样时间。
如果Gyu表示一个以脉冲传递函数描述的离散系统,也可以用ss(Gyu )命令,将脉冲传递函数模型转换成状态空间表达式。
例2假设某离散系统的脉冲传递函数为0.3 lz3+0.57z2+0.38z +0.89>,M ' _ / + 3.23兰 + 3.9防 + 2.22z + 0.47采样周期为将其输入到MATLAB的workspace中,并且绘制零、极点分布图。
并且将该离散系统脉冲传递函数模型转换成状态空间表达式。
输入下列语句num=[0.31 0.57 0.38 0.89]; den=[l 3.23 3.98 2.22 0.47];Gyu.=t£ (num, den,Is' u 0. 1) %输入并且现实系统脉冲传递函数Transfer fimctioiL :0.31 丁3 + 0.57 讥 + 0.38 z + 0.89 z A4 + 3.23 z A3 + 3.98 £2 + 2. 22 z + 0.47Sampling time : 0・1再输入语句P 跡ap (Gyu)绘制出零、极点分布图如下1.5 1Pole-Zero Mapo.1.5o.5-LIw_x < -1.5 语句执行的结果为在执行完上述语句后,GyuB 经存在于MATLAB 的 workspace 中,这时再执行语句 Eys=ss (Gyn) 执行结果为B =xl x2 x3 x4IllX1-3.23 -1.99 -0.555 -0.235 xl 1x2 2 0 0 0 x2 0 x3 0 20 0 x3 0 x40 00.5 0x4d 二ulxl x2 K 3x4 yl 0710.31 0.285 0 095 0.445Sanipling timm : 0. 1Discrete-timey(k) = [0.31 0.285 0.095 0・44勺兀伙)结果表75,离散系统的状态空间表达式为兀伙+ 1)=_-3.23 -1.99 -0.555 -0.235_~r2 0 0 0x(k)0 2 0 0 0 0 00.5 0系统的传递函数矩阵可以按下式求出G(s)=凹=C[sl - A]-1B + D 比(s)例3已知系统状态方程为_2输入以下语句syms s; %声明符号变量A=[0 1; -2 -3]; B=[l 0; 1 1]; D=[3 0;0 0;0 1]; I=[l 0;0 1]; G^simple (simple (C*F*B)+D)1-2求传递函数矩阵在已知线性定常系统中的A 、、C 和D 矩阵之后,则该 -2一1 兀]C=[2 1;1 1;-2 -1]; F=inv(s*I-A)其中inv()函数是求矩阵的逆矩阵,而simple()函数是 对符号运算结果进行简化。
执行结果如下 .(3/(5+ 1)) + 3G(s)二 2/($+ 2)—3 /(s +1)[(S +3)/(SA2+3*s+2),[ -2/(s A2+3*s+2),l/(s A2+3*s+2)] s/ (s"2+3*s+2)] [3/(S +l)+3? [ 2/ (s+2), [-3/(s +l)?1/31)] l/(s+2)l -l/(s+l)+l]这表示[si - A]'11 「s + 3"+3S + 2L —21 /(5 + 1) 1/($+ 2) (-1/(5+ 1))+11-3.线性变换1)化为对角矩阵函数eig()可以计算出矩阵A 的特征值以及将A 阵转换成对角阵的 线性变换矩阵。
其语句格式为[Q,G 二eig(4),则D 为对角阵并且 对角线上各元素为矩阵4的特征值,满足Q~'AQ=D f 因为Q = P -^ 即:PAP~X=D 。
例4线性控制系统的状态方程为试作线性变换x = P lx = Qx ,要求变换后系统矩阵4为对角阵。
解 先求出系统矩阵的特征值,Q 阵可以选择为由特征值构成 的范德蒙特矩阵。
输入语句A=[0 1 0;0 0 1;-6 -11 -6]; eigOl)■ 0 1 0 ■■MB0 X =0 0 1 兀+ 0-6-11-61U可以求出A阵的特征值为一1、一2和一3。
因此1 1-2 -34 9A=[0 1 0;0 0 l;-6 -11 -6]; B=[O;O;1]; Q=[l 1 1;-1 -2 -3;1 4 9]; P=inv(Q);A1=P*A*QB1=P*B由以上计算数据可得系统经过线性变换后的方程为_-1 00 _"0.5_ 0 -2 0 X + -1-30.5输入以下语句 执行结果如下Al =Bl 二-1.0000 0.0000 -0.0000 0.0000 -2.0000 0. 0000 -0.0000 -o.0000 -3.00000.5000-1.0000 0.5000也可以输入语句 A=[0 1 0;0 0 1;-6 -11 -6];[Q,D]=eig(k)运行结果为可见,两种线性变换虽然不同,却都可以将A 阵转换为对角阵-0-5774 0.2182 -0.1048 -1.00000.5774 -0.4364 0.3145 0 -2.0000 -0.57740.8729-0.9435-3. 0 00000再计算线性变换矩阵P,>〉P=inv(Q)并且验证结果如下» A1=P*A*Q-5.1962 -4.3301 -0.8660 -1.0000 -0.0000 0.0000 -13.74TT -18.3303 -4.5826 -0.0000 -2.0000-0.0000 -9.5394-14.3091 -4.7697 -0.0000 0 -3. 0000-0.8660 -4.5826 -4.7697A12)化为约当矩阵在MATLAB 中用函数命令jordan()来求矩阵的约当标准形。
其 命令格式为:[Q, J]=jordan(A)。
输入参量A 是系数矩阵,输出参 量J 是矩阵A 的约当标准形矩阵,而P = Q l 就是线性变换矩阵, 满足 J=Q [AQ = P A P [。
0 1 0 4=00 1化为标准形矩阵。
2-5 4可见,不满秩,即矩阵A 的特征值中有重特征值,并且A 的独立特 征向量的个数小于门。
解 首先输入语句运行结果为A=[0 1 0;0 0 1;2 -5 4]; [Q J E]=eigi :A)-0.5774 0.5774 -0.2182 1.00000 0 -0.5774 0.5774 -0.4364 0 1.00000 -0.57740.5774-0.87292.0000Ii二语句执行结果为Q =1 2 40 -2 -4计算结果表明,矩阵A的约当阵为丿= 我们验证如下2 0 00_ 1 1丸二[0 1 0;0 0 1;2 -5 4];Q=[1 -2 0;2 -2 ~2;4 -2 -4]; F二iw(Q);JTl 二执行结果为2所计算出的结果表明,满足J=P A P X二用MATLAB求解系统方程2.1线性齐次状态方程的解使用MATLAB可以方便地求出状态方程的解。
我们通过例子来说明。
例已知线性系统齐次状态方程为t -3}初始条件X(°)=求系统状态方程的解。
解用以下MATLAB程序计算齐次状态方程的解,其中collect) 函数的作用是合并同类项,ffiilaplace()函数的作用是求取拉普拉斯逆变换,函数det()的作用是求方阵的行列式。
syms s t xO x tao phi phiO; % 声明符号变量A=[0 l;-2 -3]; I=[l0;0 1];E=E*I-A; C=det (E); D=collect (invCE)); phiO=ilapl&ce CD)xO=[l;0]; x=phiO*xO程序执行结果phiO 二[ -exp (一2*t)+2*exp〔一七〕, [-2* exp (-t) +2* exp (-2* t ;l」[ -exp C"2*t)+2*exp (?t〕][-2*exp (?t)+2*exp (-2*t)] exp〔-t〕-旳)〔-2*t〕] 2*exp (-2*t)-exp (-1)]这表示—e J'r + 2e'2z线性非齐次状态方程的解 通过以下例子说明。