《Matlab问题状态方程的解ppt课件》由会员分享,可在线阅读,更多相关《Matlab问题状态方程的解ppt课件(67页珍藏版)》请在金锄头文库上搜索。
1、Ch.2 Ch.2 线性系统的时域分线性系统的时域分析析Matlab问题问题(1/3)3.6 Matlab问题问题q本章中涉及的计算问题主要有矩阵指数函数的计算、系统运动轨迹的计算(即状态空间模型的求解)以及连续系统的离散化(采样) 。基于Matlab的基本函数和工具箱,可以进行上述系统运动分析的计算和仿真。Matlab问题问题(2/3)q为更好地进行动态系统运动分析的计算和仿真,编著者设计了一个Matlab符号化和图形化的控制系统运动分析软件平台lti_analysis。这里将涉及新的Matlab程序设计方法,如使用符号计算工具箱进行矩阵指数函数和运动轨迹的符号计算、使用图形用户界面(GUI
2、)设计控制系统仿真与实验的软件平台。Matlab问题问题(3/3)q下面分别介绍基于Matlab的上述问题的程序编制和计算方法,主要有矩阵指数函数的计算矩阵指数函数的计算线性定常连续系统的状态空间模型求解线性定常连续系统的状态空间模型求解 连续系统的离散化连续系统的离散化线性定常离散系统的状态空间模型求解线性定常离散系统的状态空间模型求解 线性定常系统的运动分析的符号计算和仿真平台线性定常系统的运动分析的符号计算和仿真平台 矩阵指数函数的计算矩阵指数函数的计算(1/1)3.6.1 矩阵指数函数的计算矩阵指数函数的计算q矩阵指数函数的计算问题有两类,一类是数值计算,即给定矩阵A和具体的时间t的值
3、,计算矩阵指数eAt的值;另一类是符号计算,即在给定矩阵A下,计算矩阵指数函数eAt的封闭的(解析的)矩阵函数表达式。数值计算问题可由基本的Matlab函数完成,符号计算问题后一类则需要用到Matlab的符号工具箱。下面就分别介绍eAt的数值计算的数值计算eAt的符号计算的符号计算eAt的数值计算(1/4)1. eAt的数值计算q在Matlab中,给定矩阵A和时间t的值,计算矩阵指数eAt的值可以直接采用基本矩阵函数expm()。Matlab的expm()函数采用帕德(Pade)逼近法计算矩阵指数eAt,精度高,数值稳定性好。expm()函数的主要调用格式为Y = expm(X)其中,X为输入
4、的需计算矩阵指数的矩阵,Y为计算的结果。 eAt的数值计算(2/4)qMatlab问题问题3-1 试在Matlab中计算例3-1中矩阵A在t=0.3时的矩阵指数eAt的值。 Matlab程序程序m3-1如下。Matlab程序程序m3-1执行结果执行结果如下。A=0 1; -2 -3;t=0.3;eAt=expm(A*t) eAt = 0.9328 0.1920 -0.3840 0.3568 q在Matlab中还有3个计算矩阵指数eAt的函数,分别是expmdemo1(),expmdemo2()和expmdemo3()。expmdemo1()就是expm(),采用帕德逼近法计算矩阵指数;而exp
5、mdemo2()采用3.2.1节中介绍的利用泰勒级数展开法来计算,精度较低;expmdemo3()采用3.2.2节中介绍的利用特征值和特征向量来计算对角线矩阵,进而通过对角线矩阵的矩阵指数计算原矩阵的矩阵指数。eAt的数值计算(3/4)eAt的数值计算(4/4)expmdemo3()的计算精度取决于特征值、特征向量、指数函数exp()的计算精度,由于这3种计算有良好的计算方法,因此expmdemo3()的计算精度最高。但expmdemo3()只能计算矩阵的独立特征向量数等于矩阵的维数,即矩阵能变换为对角线矩阵的情况,因此,在不能判定矩阵是否能变换为对角线矩阵时,尽量采用函数expm()。eAt
6、的符号计算(1/8)2. eAt的符号计算q在Matlab中,对给定矩阵A,可通过符号计算工具箱的函数expm()计算变量t的矩阵指数函数eAt的表达式。在使用Matlab的符号计算工具箱计算时,需要定义符号变量,输入符号表达式与符号矩阵。下面介绍使用符号计算工具箱需要的基本操作。eAt的符号计算(2/8)1) 定义符号变量定义符号变量定义(指定)符号变量的语句的格式为syms t s x .该语句将符号t,s,x,定义为符号变量。在该语句后,就可以输入和计算符号表达式与符号矩阵。eAt的符号计算(3/8)2) 输入符号表达式输入符号表达式符号表达式的输入可采用赋值语句的方式,如赋值语句f1=
7、sin(x)2+cos(y)3-3为定义符号表达式变量f1为表达式 。在Matlab中,符号表达式的输入采用符号串的形式,其表达式的格式与Matlab的数值计算的格式基本一致。eAt的符号计算(4/8)3) 输入符号矩阵输入符号矩阵Matlab中符号矩阵的输入采用函数sym()。sym()的调用格式为S = sym(A)该函数的功能为将符号串A转换为符号矩阵,其中符号串A的格式与使用Matlab进行数值计算时矩阵的计算公式格式基本一致。如f2=sym(x2+sqrt(1-x) y*x; 1+z x+z3)的函数sym()将符号串x2+sqrt(1-x) y*x; 1+z x+z3转换为如下表示
8、的符号矩阵eAt的符号计算(5/8)q在给符号表达式变量和符号矩阵变量赋值后,在Matlab 7.0中就可以像数值计算公式那样直接采用算术运算符“+”,“-”, “*”,“/”,“”,以及exp(),expm()等函数进行符号计算。如,在前面的符号表达式变量f1和符号矩阵变量f2赋值后,执行符号计算公式f3=f1*f2就进行如下符号表达式的计算eAt的符号计算(6/8)q使用Matlab的符号工具箱的函数expm()可直接计算关于符号矩阵变量A的矩阵指数函数eA的表达式。符号计算函数expm()的调用格式为expA=expm(A)其中,输入矩阵A为Matlab的符号矩阵,输出矩阵expA为计算
9、所得的eA的Matlab符号矩阵。qMatlab问题问题3-2 试在Matlab中计算例3-1中矩阵A的矩阵指数eAt。eAt的符号计算(7/8)Matlab程序程序m3-2如下。其中t定义为符号变量,输入矩阵A为一般Matlab的数值矩阵,表达式A*t即为Matlab的符号矩阵。Matlab程序程序m3-2执行结果执行结果如下。上述计算结果与例3-1的计算结果完全一致。 syms t;A=0 1; -2 -3;eAt=expm(A*t) % 定义符号变量t% 计算矩阵A对应的矩阵指数函数 eAt = 2*exp(-t)-exp(-2*t), -exp(-2*t)+exp(-t) 2*exp(
10、-2*t)-2*exp(-t), -exp(-t)+2*exp(-2*t) 例3-1的计算结果eAt的符号计算(8/8)qMatlab有着功能非常强大的符号计算功能,包括符号微分、符号积分、符号矩阵运算、符号线性方程组解、符号非线性方程组解、符号常微分方程组解等,还可以与符号计算软件Maple混合编程,调用Maple的其他符号计算功能。线性定常连续系统的状态空间模型求解线性定常连续系统的状态空间模型求解 (1/2)3.6.2 线性定常连续系统的状态空间模型求解线性定常连续系统的状态空间模型求解 qMatlab提供了非常丰富的线性定常连续系统的状态空间模型求解(即系统运动轨迹的计算)的功能,主要
11、的函数有初始状态响应函数initial()、阶跃响应函数step()以及可计算任意输入的系统响应函数lsim(),但这里主要是计算其系统响应的数值解。线性定常连续系统的状态空间模型求解线性定常连续系统的状态空间模型求解 (2/2)对系统运动分析问题,有时需要求解系统响应的函数表达式。为此,编著者编写了专门用于求解系统响应函数表达式的Matlab符号计算函数sym_lsim()。下面将分别介绍状态空间模型求解的Matlab程序编制和计算问题,主要内容有:初始状态响应函数初始状态响应函数initial()、阶跃响应函数阶跃响应函数step()、任意输入的系统响应函数任意输入的系统响应函数lsim(
12、),以及任意输入的符号响应函数任意输入的符号响应函数sym_lsim()。初始状态响应函数初始状态响应函数initial()(1/8)1. 初始状态响应函数初始状态响应函数initial()q初始状态响应函数initial()主要是计算状态空间模型(A,B,C,D)的初始状态响应,其主要调用格式为initial(sys,x0,t)y,t,x = initial(sys,x0,t)其中sys为输入的状态空间模型;x0为给定的初始状态;t为指定仿真计算状态响应的时间区间变量(数组)。第1种调用格式的输出格式为输出响应曲线图,第2种调用格式的输出为数组形式的输出变量响应值y,仿真时间坐标数组t,状态
13、变量响应值x。初始状态响应函数初始状态响应函数initial()(2/8)Matlab中,时间区间变量(数组) t有三种格式:t=Tintial:dt:Tfinal 表示仿真时间段为Tintial,Tfinal,仿真时间步长为dtt=Tintial:Tfinal 表示仿真时间段为Tintial,Tfinal,仿真时间步长dt缺省为1t=Tfinal 表示仿真时间段为0,Tfinal,系统自动选择仿真时间步长dt若时间数组缺省(没有指定),表示系统自动选择仿真时间区间0,Tfinal和仿真时间步长dt。初始状态响应函数初始状态响应函数initial()(3/8)qMatlab问题问题3-3 试在
14、Matlab中计算例3-1中如下系统在0,5s的初始状态响应。 Matlab程序程序m3-3如下。其中,最后一句语句plot(t,x)是以时间坐标数组t为横坐标,绘出x中存储的2维状态向量x(t)的随时间变化的轨迹。A=0 1; -2 -3;B=; C=; D=;x0=1; 2;sys=ss(A,B,C,D);y,t,x=initial(sys,x0,0:5);plot(t,x) % 输入状态空间模型各矩阵,若没有相应值,可赋空矩阵% 输入初始状态% 求系统在0,5s的初始状态响应% 绘以时间为横坐标的状态响应曲线图 初始状态响应函数初始状态响应函数initial()(4/8)Matlab程序
15、程序m3-3执行结果执行结果如图3-4所示。图图3-4 Matlab问题问题3-3的状态响应曲线图的状态响应曲线图初始状态响应函数初始状态响应函数initial()(5/8)qMatlab提供的函数initial()只能计算出状态响应的计算值,若需要计算状态响应的表达式则需要根据前面介绍的符号工具箱,自己编程实现状态响应函数表达式的求解。 qMatlab问题问题3-4 试在Matlab中计算Matlab问题3-3的初始状态响应表达式。Matlab程序程序m3-4如下。A=0 1; -2 -3;sysm t;x0=1; 2;xt=expm(A*t)*x0 初始状态响应函数初始状态响应函数init
16、ial()(6/8)Matlab程序程序m3-4执行结果执行结果如下。q在Matlab程序m3-3中运用了绘图函数plot()。Matlab提供了非常强大的绘图功能,可以绘2维曲线图、3维曲面图、4维切片图以及动态图形(动画),其中函数plot()是主要的2维曲线绘图函数,主要调用格式为:plot(Y)plot(X, Y)plot(X, Y, LineSpec, PropertyName, PropertyValue)xt = -3*exp(-2*t)+4*exp(-t) -4*exp(-t)+6*exp(-2*t) 例3-3的计算结果初始状态响应函数初始状态响应函数initial()(7/8
17、)第1种调用格式的输入Y为mn矩阵,其输出为矩阵Y的每一列画一条曲线,共n条曲线的曲线图。该曲线图的横坐标为1至m的自然数。对第2种调用格式,若X和Y为向量,则长度必须相等,输出为一条X为横坐标轴的曲线。若X为向量,Y为矩阵,则X的长度等于Y的行数或者列数。v这时输出为Y的列向量或者行向量对应的,以X为横坐标轴的一组曲线。若Y为向量,X为矩阵,则Y的长度等于X的行数或者列数。v这时输出为X的列向量或者行向量对应的,以Y为纵坐标轴的一组曲线。初始状态响应函数初始状态响应函数initial()(8/8)第3种调用格式的LineSpec为指定输出曲线的线型、颜色、曲线数据点的标记符号。而Proper
18、tyName和PropertyValue则用于指定图的一些特性,如图名、坐标名与刻度等。阶跃响应函数阶跃响应函数step()(1/2)2. 阶跃响应函数阶跃响应函数step()q阶跃响应函数step()可用于计算在单位阶跃输入和零初始状态(条件)下传递函数模型的输出响应,或状态空间模型的状态和输出响应,其主要调用格式为step(sys,t)y,t = step(sys,t)y,t,x = step(sys,t)其中,对第1、2种调用格式,sys为传递函数模型变量或状态空间模型变量;对第3种方式,sys为状态空间模型变量。t为指定仿真计算状态响应的时间数组,其格式与初始状态响应函数initial
19、()一样,也可以缺省。阶跃响应函数阶跃响应函数step()(2/2)第1种调用格式的输出为输出响应的图形输出,而第2、3种调用格式的输出为将输出响应、时间坐标数组、状态响应赋值给指定的数组变量。q阶跃响应函数step()的使用方法与前面介绍的initial()函数相似,这里不再赘述。任意输入的系统响应函数任意输入的系统响应函数lsim()(1/10)3. 任意输入的系统响应函数任意输入的系统响应函数lsim()q任意输入的系统响应函数lsim()可用于计算在给定的输入信号序列(输入信号函数的采样值)下传递函数模型的输出响应,或状态空间模型的状态和输出响应,其主要调用格式为lsim(sys,u,
20、t,x0)y,t,x = lsim(sys,u,t,x0)其中,sys为传递函数模型变量或状态空间模型变量;t为时间坐标数组;u是输入信号u(t)对应于时间坐标数组t的各时刻输入信号采样值组成的数组,是求解系统响应必须给定的;任意输入的系统响应函数任意输入的系统响应函数lsim()(2/10)x0是初始状态向量。当输入的sys为传递函数模型时,x0的值不起作用,可以缺省。函数lsim()的第1种调用格式的输出为将输出响应和输入信号序列绘在一起的曲线图,第2种调用格式的输出与前面介绍的2个响应函数一样。任意输入的系统响应函数任意输入的系统响应函数lsim()(3/10)q输入变量u(t)的值u可
21、以为用户需要的任意输入函数根据时间坐标数组t进行采样获得,也可以采用Matlab中的信号生成函数gensig()产生。gensig()的调用格式为u,t = gensig(type,tau)u,t = gensig(type,tau,Tf,Ts)其中,type为选择信号类型的符号串变量;tau为以秒为单位的信号周期;Tf和Ts分别为产生信号的时间长度和信号的采样周期。gensig 函数可以产生的信号类型type为正弦信号sin、方波信号square、周期脉冲信号pulse。所有信号的幅值为1。任意输入的系统响应函数任意输入的系统响应函数lsim() (4/10)qMatlab问题问题3-5 试
22、在Matlab中计算如下系统在0,10s内周期为3s的单位方波输入下的状态响应 。 Matlab程序程序m3-5如下。A=0 1; -2 -3;B=0; 1; C=; D=;x0=1; 2;sys=ss(A,B,C,D);u t=gensig(square,3,10,0.1)y,t,x = lsim(sys,u,t,x0)plot(t,u,t,x); % 产生周期为3s,时间为10s,采样周期为0.1s的方波信号% 计算系统在输入序列u下的响应% 将输入和状态响应绘于一张图内 任意输入的系统响应函数任意输入的系统响应函数lsim() (5/10)Matlab程序程序m3-5执行结果执行结果如图
23、3-5所示。图图3-5 Matlab问题问题3-5的状态响应曲线图的状态响应曲线图任意输入的系统响应函数任意输入的系统响应函数lsim() (6/10)qMatlab提供的函数lsim()只能计算出状态响应的计算值,若需要计算状态响应的表达式则需要根据前面介绍的符号工具箱,自己编程实现状态响应函数表达式的求解。qMatlab问题问题3-6 试在Matlab中计算Matlab问题3-5的系统的单位阶跃状态响应表达式。Matlab程序程序m3-6如下。A=0 1; -2 -3; B=0; 1;x0=1; 2;ut=1; % 输入ut为单位阶跃信号syms t tau; % 指定符号变量 % 求系统
24、的状态响应函数表达式 xt=expm(A*t)*x0+int(expm(A*(t-tau)*B*ut,tau,0,t)任意输入的系统响应函数任意输入的系统响应函数lsim() (7/10)Matlab程序程序m3-6执行结果执行结果如下。xt = -5/2*exp(-2*t)+3*exp(-t)+1/2 -3*exp(-t)+5*exp(-2*t) 例3-3的计算结果任意输入的系统响应函数任意输入的系统响应函数lsim() (8/10)q在Matlab程序m3-6中涉及符号积分的计算函数int(),该函数的调用格式为:R = int(S)R = int(S,v)R = int(S,a,b)R
25、= int(S,v,a,b)其中,输入S为待求积分的符号表达式,v为积分变量,a和b分别为积分变量的下限和上限。符号积分函数int()的意义为求解符号表达式S对应于积分变量v在积分区间a,b内的积分,积分结果R为符号表达式。任意输入的系统响应函数任意输入的系统响应函数lsim() (9/10)q符号积分函数int()的积分变量v和积分上限a与下限b可以缺省。当v缺省时,则积分变量为程序中指定的惟一符号变量,或由符号工具箱符号变量自动确定规则确定符号表达式S的符号变量.符号工具箱符号变量自动确定规则为:符号变量为符号x或与x最近的单文字符号,如y,z,w,v,。当积分限a与b缺省时(只能同时缺省
26、),则符号积分函数int()求解为S的不定积分式。任意输入的系统响应函数任意输入的系统响应函数lsim() (10/10)q在Matlab程序m3-6中符号积分计算int(expm(A*(t-tau)*B*ut,tau,0,t)中,待积分函数为eA(t-tau),积分变量指定为tau,积分区间为0,t。该积分式计算的是零状态响应函数的表达式,进行的是卷积的符号计算。任意输入的任意输入的符号符号响应函数响应函数sym_lsim()(1/9)4. 任意输入的任意输入的符号符号响应函数响应函数sym_lsim()qMatlab提供的函数lsim()只能计算出状态响应的计算值,若需要计算状态响应的表达
27、式,则需要根据前面介绍的符号工具箱,自己编程实现状态响应函数表达式的求解。编著者开发了专门进行任意输入下系统响应函数的符号表达式的符号计算函数sym_lsim(),以计算任意输入下的线性系统响应函数。任意输入的任意输入的符号符号响应函数响应函数sym_lsim()(2/9)qsym_lsim()的主要调用格式为:yt,xt=sym_lsim(sys,x0,in_signal,a,b,amplit)yt,xt=sym_lsim(sys,x0,in_signal,a,b)yt,xt=sym_lsim(sys,x0,in_signal)其中,sys为系统状态空间模型;x0、amplit、 a和b分别
28、为系统的初始状态、输入信号幅值、求解的系统状态轨迹的起始时间和结束时间;in_signal为输入信号符号串。输出项yt和xt的格式为符号表达式(矩阵)。由于采用符号工具箱计算,因此,x0,a,b和amplit可以为数值与数值变量,也可以为符号表达式或符号变量。任意输入的任意输入的符号符号响应函数响应函数sym_lsim()(3/9)q在sym_lsim中,in_signal可以是表示系统输入函数的符号表达式或符号变量,但为方便输入常用的阶跃信号和脉冲信号,分别规定这两类输入信号的in_signal为step和impulse。通过in_signal和amplit这两个输入项,可以实现任意的系统输
29、入信号设置。如,当输入信号u(t)=sin(2t+0.5)+e-3t时,in_signal为符号表达式sin(2*t+0.5)+exp(-3*t)当输入信号为5个单位脉冲信号时,in_signal和amplit分别为in_signal=impulse; amplit=5任意输入的任意输入的符号符号响应函数响应函数sym_lsim()(4/9)qMatlab问题问题3-7 试在Matlab中计算如下系统在输入u(t)=e-2t下的输出响应表达式。 Matlab程序程序m3-7如下。A=0 1; -2 -3;B=0; 1; C=1 0; D=0;x0=1; 2;sys=ss(A,B,C,D);sy
30、ms t;yt=sym_lsim(sys,x0,exp(-2*t),0,t,1) % 指定符号变量% 计算输入exp(-2t)下系统的输出响应函数 任意输入的任意输入的符号符号响应函数响应函数sym_lsim()(5/9)Matlab程序程序m3-7执行结果执行结果如下。q在Matlab中,计算得到符号表达式后,可以使用函数subs()和ezplot()很方便地求取所需要的函数值和绘出函数图形。下面加以简单介绍.yt = 5*exp(-t)-4*exp(-2*t)-t*exp(-2*t)任意输入的任意输入的符号符号响应函数响应函数sym_lsim()(6/9)1) 函数subs()。函数sub
31、s()可用于符号表达式的函数值计算和变量代换,其主要调用格式为R = subs(S, new)R = subs(S,old,new) 其中,S为要计算或代换的符号表达式(矩阵);old为要计算或被代换的符号变量;new为要计算的变量的值或代换的新变量。在第1种调用格式中没有指定需计算或代换的变量,系统自动根据符号变量自动确定规则确定符号表达式S的变量。任意输入的任意输入的符号符号响应函数响应函数sym_lsim()(7/9)如,欲计算Matlab程序m3-7计算好的输出响应的符号表达式yt在t=0.6时刻的值,只需执行subs(yt,t,0.6)即可得系统输出响应y(t)在t=0.6时刻的值为
32、1.3586。任意输入的任意输入的符号符号响应函数响应函数sym_lsim()(8/9)2) 函数ezplot()。符号表达式绘图函数ezplot()可以直接绘制符号表达式所表示的函数的2维曲线图,其主要调用格式为ezplot(f,min,max)ezplot(f,xmin,xmax,ymin,ymax)其中,f为给定的符号表达式;min,max为需绘图曲线的自变量的区间;xmin,xmax,ymin,ymax为绘图曲线的2维变量的区间。当min,max缺省时,系统自动设置绘图区间为 -2,2。 任意输入的任意输入的符号符号响应函数响应函数sym_lsim()(9/9)如,欲绘出Matlab程
33、序m3-7得到的符号表达式yt在0,4s内的曲线,只需执行ezplot(yt,0,4)即可得系统输出响应y(t)在0,4s内的曲线图如图3-6所示。图图3-6 输出输出响应的符号表达式的函数图响应的符号表达式的函数图连续系统的离散化连续系统的离散化(1/6)3.6.3 连续系统的离散化连续系统的离散化qMatlab语言提供了连续系统经采样而进行离散化的函数c2d()。该函数的功能为将连续系统的传递函数模型和状态空间模型变换为离散系统的传递函数模型和状态空间模型,其主要调用格式为sysd = c2d(sys,Ts)sysd = c2d(sys,Ts,method)其中,sys为输入的连续系统传递
34、函数模型或状态空间模型;sysd为离散化所得的离散系统传递函数模型或状态空间模型;连续系统的离散化连续系统的离散化(2/6)Ts为采样周期;method为离散化方法选择变量,它可以为zoh、foh、tustin和matched等,分别对应于基于0阶和1阶保持器的离散化法、双线性法和零极点匹配法。v与3.4.1节精确离散法对应的method的值为zoh,其意义为采样系统的输入信号采样后将通过0阶保持器。连续系统的离散化连续系统的离散化(3/6)qMatlab问题问题3-8 试在Matlab中计算例3-11的如下系统在采样周期为0.1s时的离散化状态方程 。 Matlab程序程序m3-8如下。A=
35、0 1; 0 -2;B=0; 1; C=; D=;Ts=0.1;sys=ss(A,B,C,D);sys_d=c2d(sys,Ts,zoh) % 赋值采样时间% 对连续系统sys进行离散化,其中保持器为0阶 连续系统的离散化连续系统的离散化(4/6)Matlab程序程序m3-8执行结果执行结果如下。a = x1 x2 x1 1 0.09063 x2 0 0.8187b = u1 x1 0.004683 x2 0.09063Sampling time: 0.1Discrete-time model. 连续系统的离散化连续系统的离散化(5/6)q对近似离散法,可以根据近似离散化公式,直接编程实现。q
36、Matlab问题问题3-9 试用近似离散化方法计算Matlab问题3-8的系统的离散化状态方程。Matlab程序程序m3-9如下。A=0 1; 0 -2;B=0; 1; C=; D=;Ts=0.1;n,m=size(A);A_d=eye(n)+A*Ts;B_d=B*Ts;sys_d=ss(A_d,B_d,C,D,Ts) % 查询矩阵A的各维的大小% 计算近似离散法的系统矩阵% 计算输入矩阵 连续系统的离散化连续系统的离散化(6/6)Matlab程序程序m3-9执行结果执行结果如下。a = x1 x2 x1 1 0.1 x2 0 0.8 b = u1 x1 0 x2 0.1Sampling ti
37、me: 0.1Discrete-time model. 线性定常离散系统的状态空间模型求解线性定常离散系统的状态空间模型求解 (1/5)3.6.4 线性定常离散系统的状态空间模型求解线性定常离散系统的状态空间模型求解 qMatlab提供的初始状态响应函数initial()、阶跃响应函数step()和任意输入的系统响应函数lsim()也同样适用于线性定常离散系统,其使用方法与连续系统时基本一致。下面简单介绍如何运用任意输入的系统响应函数lsim()计算线性定常离散系统的响应。线性定常离散系统的状态空间模型求解线性定常离散系统的状态空间模型求解 (2/5)q在计算离散系统的系统响应时,函数lsim
38、()的主要调用格式为lsim(sys,u,t,x0,type)yt,t,xt=lsim(sys,u,t,x0,type)其中sys为离散系统的传递函数模型或状态空间模型;t为时间坐标数组;u为时间坐标数组t指定时刻的输入信号序列,其采样周期需与离散系统模型sys的采样周期定义一致;x0为初始状态;type为输入信号采样保持器的选择变量,type=zoh和foh分别表示为0阶和1阶采样信号保持器。线性定常离散系统的状态空间模型求解线性定常离散系统的状态空间模型求解 (3/5)若type缺省,Matlab将采用高阶保持器对输入的采样信号进行光滑处理后,再进行系统响应求解。对应于前面3.5.1节求取
39、离散系统的状态响应方法,type变量应为zoh。线性定常离散系统的状态空间模型求解线性定常离散系统的状态空间模型求解(4/5)qMatlab问题问题3-10 试在Matlab中计算例3-14的线性离散系统 在采样周期为0.1s,系统输入为sin(t)时的0,6s的状态响应。Matlab程序程序m3-10如下。G=0 1; -0.16 -1;H=1; 1; C=; D=;x0=1; -1;Ts=0.1;sys=ss(G,H,C,D,Ts);u,t=gensig(sin,2,6,Ts); y,t,x = lsim(sys,u,t,x0,zoh)plot(t,u,t,x); % 定义采样周期% 建立
40、离散系统状态空间模型% 产生周期为2s,时间为6s的正弦信号% 计算离散系统在给定输入下的响应% 将输入与状态绘于一张图内 线性定常离散系统的状态空间模型求解线性定常离散系统的状态空间模型求解(5/5)Matlab程序程序m3-10执行结果执行结果如图3-7所示。图图3-7 Matlab问题问题3-10的状态响应曲线图的状态响应曲线图q根据符号计算函数sym_lsim()的思想和源程序,读者可自行扩展,用于求解计算任意输入的线性定常离散系统的状态响应的符号表达式。线性定常系统的运动分析的符号计算和仿真平台线性定常系统的运动分析的符号计算和仿真平台 (1/6)3.6.5 线性定常系统的运动分析的
41、符号计算和仿真平台线性定常系统的运动分析的符号计算和仿真平台 q根据本章的主要内容和线性定常系统的运动分析的需要,编著者基于Matlab的图形用户界面(GUI)技术,开发了一个线性定常系统运动分析的符号计算和图形仿真软件lti_analysi)。该软件的主要功能有 可以对连续和离散2种线性定常系统运动的状态、输出响应实现符号计算和数值计算2种运动轨迹分析,系统可以是SISO的,也可以是MIMO的。系统的输入信号可以是常用的阶跃、脉冲、正弦、方波、白噪声等,特点的是可以实现任意输入信号的符号表达式输入。线性定常系统的运动分析的符号计算和仿真平台线性定常系统的运动分析的符号计算和仿真平台 (2/6
42、)可以实现状态和输出的运动轨迹的图形、数据以及符号表达式的输出。界面友好,操作简便,使用方便。 线性定常系统的运动分析的符号计算和仿真平台线性定常系统的运动分析的符号计算和仿真平台 (3/6)q仿真软件lti_analysis的界面如图3-8所示。图图3-8 仿真软件仿真软件lti_analysis的运行界面图的运行界面图线性定常系统的运动分析的符号计算和仿真平台线性定常系统的运动分析的符号计算和仿真平台 (4/6)q用户只要在Matlab中将lti_ analysis.fig文件作为GUI文件打开并运行,或直接打开lti_analysis. m文件并运行,则可以根据计算与仿真的要求,在图形界
43、面上输入仿真对象的状态空间模型、初始状态、输入信号模型(括信号幅值、周期信号频率、白噪声信号的方差、任意输入信号的符号表达式等)、仿真参数(包括输出的变量、输出的格式、仿真时间、仿真步长和采样周期等),就可以进行线性定常系统运动过程的状态、输出响应的计算与仿真,可以得到响应的符号表达式、图形或数据。 线性定常系统的运动分析的符号计算和仿真平台线性定常系统的运动分析的符号计算和仿真平台(5/6)qMatlab问题问题3-11 试使用软件lti_analysis计算如下系统在输入u(t)=1.2e-t+0.8sin(2t)下0,4s的状态响应轨迹曲线图。 q运行仿真软件lti_analysis后,
44、按Matlab问题3-11的要求,在GUI界面的输入框和选择框上输入各输入项和选择项,按“确定”键,则有如图3-9所示的仿真界面输出(结果)。线性定常系统的运动分析的符号计算和仿真平台线性定常系统的运动分析的符号计算和仿真平台 (6/6)图图3-9 Matlab问题问题3-11的仿真软件的仿真软件lti_analysis运行结果界面图运行结果界面图本章小结(1/3)q本章小结q本章讨论状态空间模型描述的线性系统的运动分析,该问题是控制系统分析的主要问题,也是更好地进行系统综合与控制设计的前提。3.1节首先导出了线性定常连续系统的齐次状态方程的解,定义了矩阵指数函数以及状态转移矩阵,并基于此得到了非齐次状态方程的解。结果表明,系统的状态响应由2个部分组成。v其一是由初始状态引起的状态响应,即系统自由运动;v其二为由初始时刻之后的输入引起的状态响应,即系统强迫运动。