1、Ch.4 线性系统的能控性和能观性,Matlab问题(1/1),4.8 Matlab问题本章涉及的计算问题主要有状态能控性/能观性判定、系统能控能观分解、能控/能观规范形变换以及能控/能观规范形实现。下面分别介绍基于Matlab的上述问题的程序编制和计算方法。,状态能控性与能观性判定 (1/2),4.8.1 状态能控性与能观性判定 状态能控性与能观性是线性系统的重要结构性质,描述了系统的本质特征,是系统分析和设计的主要考量因素。Matlab提供了用于状态能控性、能观性判定的能控性矩阵函数ctrb()、能观性矩阵函数obsv()和能控性/能观性格拉姆矩阵函数gram(),通过对这些函数计算所得的
2、矩阵求秩就可以很方便地判定系统的状态能控性、能观性。,状态能控性与能观性判定 (2/2),用户也可以根据能控性、能观性的各种判据,自己编制程序和函数来判定这两个系统的结构性质。 下面分别介绍状态能控性判定 状态能观性判定,状态能控性判定 (1/10),1. 状态能控性判定 无论是连续还是离散的线性定常系统,采用代数判据判定状态能控性需要计算能控性矩阵。Matlab提供的函数ctrb()可根据给定的系统模型,计算能控性矩阵Qc=B AB An-1B能控性矩阵函数ctrb()的主要调用格式为:Qc = ctrb(A,B)Qc = ctrb(sys)其中,第1种输入格式为直接给定系统矩阵A和输入矩阵
3、B,第2种格式为给定状态空间模型sys。输出矩阵Qc为计算所得的能控性矩阵。,状态能控性判定 (2/10),基于能控性矩阵函数ctrb()及能控性矩阵Qc的秩的计算,就可以进行连续线性定常系统的状态能控性的代数判据判定。 Matlab问题4-1 试在Matlab中判定例4-2的如下系统的状态能控性。,状态能控性判定(3/10),Matlab程序m4-1如下。Matlab程序m4-1中的函数Judge_contr()通过调用能控性矩阵函数ctrb()和计算矩阵秩的函数rank(),完成能控性代数判据的判定。函数Judge_contr()的源程序为,状态能控性判定(4/10),Matlab程序m4
4、-1执行结果如下。表明所判定的系统状态不能控。,在上述程序和函数中,使用了2个Matlab基本矩阵函数rank()和size(),其定义和使用方法如下1) 计算矩阵秩的函数rank()。求矩阵秩的函数rank()的调用格式为:k = rank(A)k = rank(A,tol)其中输入A为矩阵,输出k为矩阵A的秩。,状态能控性判定(5/10),虽然Matlab求矩阵秩采用了数值特性良好的计算奇异值的方法,但考虑到计算机浮点计算过程产生的数值计算误差可能使得判定秩有偏差,第2种调用格式可以给定判定矩阵奇异值的容许误差,而对第1种格式系统将自动设定一个容许误差tol。2) 计算数组各维大小的函数s
5、ize()。函数size()在Matlab编程中非常有用,它可以在各个调用函数中随时求取所处理的数组的各维数的大小,而没有必要将数组的维数大小作为变量(参量)参与函数调用,所设计的程序简洁、易读易懂。,状态能控性判定(6/10),函数size()的主要调用格式为:d = size(X)m = size(X,dim)d1,d2,d3,.,dn = size(X)其中,输出d为数组X的各维的大小组成的1维数组;m为数组X的第dim维的大小;d1,d2,d3,.,dn为数组X的各维的大小。如,d=size(1 2 3; 4 5 6)的输出为数组d=2 3,而m,n =size(1 2 3; 4 5
6、6)的输出则是m和n分别为2和3。,状态能控性判定(7/10),由4.3.1节的定理4-12可知,线性定常离散系统(G,H)状态能控的充分必要条件为rank Qc=rank Qc Gn因此判定线性定常离散系统状态能控性的代数判据也需计算能控性矩阵Qc=H GH Gn-1H与连续系统类似,基于能控性矩阵函数ctrb()可以判定线性定常离散系统状态能控性。,状态能控性判定(8/10),状态能控性判定(9/10),Matlab问题4-2 试在Matlab中判定例4-12的如下系统的状态能控性。,Matlab程序m4-2如下。,状态能控性判定(10/10),Matlab程序m4-2执行结果如下。,状态
7、能观性判定 (1/5),2. 状态能观性判定 无论对连续还是离散的线性定常系统,采用代数判据判定状态能观性需要计算定义的能观性矩阵并要求能观性矩阵Qo的秩等于状态空间维数。Matlab提供的函数obsv()可根据给定的系统模型计算能观性矩阵。,状态能观性判定 (2/5),能观性矩阵函数obsv()的主要调用格式为Qo = obsv(A,C)Qo = obsv(sys)其中第1种调用格式为直接输入系统矩阵A和输出矩阵C,第2种格式为输入状态空间模型sys;输出矩阵Qo为计算所得的能观性矩阵。基于能观性矩阵函数obsv()及能观性矩阵Qo秩的计算,就可以进行连续和离散线性定常系统的状态能观性的代数
8、判据判定。,状态能观性判定(3/5),Matlab问题4-3 试在Matlab中判定例4-13的如下系统的状态能观性。,Matlab程序m4-3如下。,状态能观性判定(4/5),其中函数Judge_obsv()的源程序为,Matlab程序m4-3执行结果如下。,状态能观性判定(5/5),其中函数Judge_obsv()的源程序为,Matlab程序m4-3执行结果如下。表明所判定的系统状态能观。,线性系统的能控能观分解(1/2),4.8.2 线性系统的能控能观分解4.5节介绍的线性定常系统的能控能观分解,让我们清楚地了解动态系统哪些哪些子空间(子系统)状态完全能控,哪些完全不能控;哪些子空间状态
9、完全能观,哪些完全不能观。在控制系统设计与综合时,能更好地有针对性地进行设计与综合。,线性系统的能控能观分解(2/2),Matlab提供了用于状态能控性分解的函数ctrbf()和状态能观性分解的函数obsvf()。基于这2个函数,用户可以通过逐步分解,求得系统的能控能观分解。为此,编著者设计了用于能控能观分解的Matlab函数ctrb_obsvf()。,能控性分解函数ctrbf()(1/5),1. 能控性分解函数ctrbf()能控性分解函数ctrbf()的主要调用格式为A_c,B_c,C_c,Tc = ctrbf(A,B,C)A_c,B_c,C_c,Tc = ctrbf(A,B,C,tol)其
10、中,输入格式A,B和C为需按能控性分解的状态空间模型的各矩阵,tol为计算容许误差;输出的A_c,B_c和C_c为能控性分解之后的状态空间模型的各矩阵;Tc为变换矩阵,系统进行的状态变换为,能控性分解函数ctrbf()(2/5),经函数ctrbf()能控性分解后,系统的状态空间模型为,Matlab问题4-4 试在Matlab中对例4-15的系统进行能控性分解。,能控性分解函数ctrbf()(3/5),Matlab程序m4-4如下。,Matlab程序m4-4执行结果如下。,例4-15计算结果(能控部分),结果完全等价,能控性分解函数ctrbf()(4/5),由于变换矩阵不唯一且状态变量向量中变量
11、排列的次序不同,所得到的能控性分解模型也不唯一。函数ctrbf()的能控性分解变换矩阵和状态变量的排列与4.5.1节的能控性分解定理4-20的有所不同,因此得到的能控性分解后的状态空间模型也有所不同,但本质是一致的。,能控性分解函数ctrbf()(5/5),与4.5.1节内容相对应,编著者开发了一个能控性分解函数ctrbf2(),可用于求取定理4-20的能控分解,其主要调用格式为A_c,B_c,C_c,Tc,nc = ctrbf2(A,B,C)A_c,B_c,C_c,Tc,nc = ctrbf2(A,B,C,tol)其中,输出nc为能控子系统的维数,其他输入输出格式与Matlab函数ctrbf
12、()一致。读者可以使用该函数方便地将系统按能控性进行结构分解,这里不再赘述。,能观性分解函数obsvf()(1/5),2. 能观性分解函数obsvf()能观性分解函数obsvf()的主要调用格式为A_o,B_o,C_o,To = obsvf(A,B,C)A_o,B_o,C_o,To = obsvf(A,B,C,tol)其中输入格式与能控性分解函数ctrbf()一致;输出的A_o,B_o和C_o为能观性分解之后的状态空间模型的各矩阵;To为变换矩阵,系统进行的状态变换为,能观性分解函数obsvf()(2/5),经函数obsvf()能观性分解后,系统的状态空间模型为,与能控性分解函数ctrbf()
13、的使用方法完全一致,读者可非常方便地使用该函数进行系统的能观性分解(这里不再赘述)。同样地,由于变换矩阵不唯一以及状态变量向量中变量排列的次序不同,所得到的能观性分解模型也不唯一。函数obsv()得到的能观性分解状态空间模型与4.5.2节的能观性分解定理4-21的有所不同,但本质是一致的。,能观性分解函数obsvf()(3/5),与4.5.2节内容相对应,编著者开发了一个能观性分解函数obsvf2()可用于求取定理4-21的能观性分解,其主要调用格式为A_o,B_o,C_o,To,no = obsvf2(A,B,C)A_o,B_o,C_o,To,no = obsvf2(A,B,C,tol)其中
14、输出no为能观子系统的维数,其他输入输出与Matlab函数obsvf()一致。,能观性分解函数obsvf()(4/5),Matlab问题4-5 试在Matlab中对例4-16的系统进行能观性分解。,Matlab程序m4-5如下。,能观性分解函数obsvf()(5/5),Matlab程序m4-5执行结果如下。,例4-16计算结果(能观部分),结果完全一致,能控能观分解函数ctrb_obsvf()(1/4),3. 能控能观分解函数ctrb_obsvf()Matlab没有提供直接进行系统能控能观分解的函数,编著者根据4.5.3介绍的能控能观分解方法,开发了直接进行能控能观分解的函数ctrb_obsv
15、f()。能控能观分解函数ctrb_obsvf()的主要调用格式为Aco,Bco,Cco,Tco,nco = ctrb_obsvf(A,B,C)Aco,Bco,Cco,Tco,nco = ctrb_obsvf(A,B,C,tol)其中输入格式与能控性分解函数ctrbf()和能观性分解函数obsvf()一致;输出的Aco,Bco和Cco为能控能观分解之后的状态空间模型的各矩阵;,能控能观分解函数ctrb_obsvf()(2/4),Tco为变换矩阵,系统进行的状态变换为nco为分解后4个子系统的维数组成的数组。在这里,变换后状态变量的排列与4.5.3节定理4-22一致,为能控但不能观、能控又能观、不
16、能控也不能观以及不能控但能观,nco中各元素即为按照状态变量排列顺序的4个子系统的维数。,能控能观分解函数ctrb_obsvf()(3/4),Matlab问题4-6 试在Matlab中对例4-17的如下系统进行能控能观分解。,Matlab程序m4-6如下。,能控能观分解函数ctrb_obsvf()(4/4),Matlab程序m4-6执行结果如下。该系统经能控能观分解后,得到3个1维子系统,分别为能控但不能观、能控又能观、不能控但能观。,例4-17计算结果,变量排列顺序不同,结果完全一致,能控规范形和能观规范形 (1/2),4.8.3 能控规范形和能观规范形 4.6节介绍的线性定常系统的能控规范
17、形和能观规范形,使得系统分析、设计与综合问题得以简化,更加有助于理解和问题求解。建立系统的能控规范形和能观规范形是系统分析、设计与综合问题中的重要问题。Matlab中提供的建立系统规范形的函数canon()只能用于建立对角线规范形和SISO系统的能控规范I形,没有提供建立其他规范形的可直接调用的函数。编著者根据建立规范形的方法,开发了相应的建立能控规范形的函数ctr_canon()和建立能观规范形的函数obsv_canon()。,能控规范形和能观规范形 (2/2),下面就分别介绍建立能控规范形能观规范形的编著者设计的Matlab函数。,能控规范形(1/4),1. 能控规范形能控规范形的函数ct
18、r_canon()可以处理SISO和MIMO系统的能控规范形的建立问题,包括4.5.1和4.5.3节介绍的能控规范I和II形、旺纳姆能控规范II形和龙伯格能控规范II形等4种常用的能控规范形。函数ctr_canon的主要调用格式为:sys_ctr,Tc=ctr_canon(sys, type)其中,sys为需变换的系统的状态空间模型;sys_ctr为变换所得的状态空间模型;Tc为对系统sys所作的变换的变换矩阵;type为所求的能控规范形的类型。,能控规范形(2/4),对应于能控规范I和II形、旺纳姆能控规范II形和龙伯格能控规范II形4种模型,符号串type分别为1st、 2nd、Wonha
19、m和Luenb。,能控规范形(3/4),Matlab问题4-7 试在Matlab中求解如下SISO系统的能控规范I形和II形。,Matlab程序m4-7如下。,能控规范形(4/4),Matlab程序m4-7执行结果如下。,例4-19计算结果,结果完全一致,能控规范形(5/4),Matlab问题4-8 试在Matlab中求解例4-21的如下MIMO系统的旺纳姆能控规范II形。,Matlab程序m4-8如下。,能控规范形(6/4),Matlab程序m4-8执行结果如下。,例4-21计算结果,结果完全一致,能观规范形(1/4),2. 能观规范形能观规范形的函数obsv_canon()可以处理SISO
20、和MIMO系统的能观规范形的建立问题,包括4.5.2节介绍的能观规范I形和能观规范II形2种常用的能观规范形。函数obsv_canon()的主要调用格式为:sys_obsv,To=obsv_canon(sys, type)其中sys为需变换的系统的状态空间模型;sys_obsv为变换所得的状态空间模型;To为对系统sys所作的变换的变换矩阵,type为所求的能观规范形的类型。,能观规范形(2/4),对应于能观规范I形和能观规范II形2种模型,符号串type分别为1st和2nd。,能观规范形(3/4),Matlab问题4-9 试在Matlab中求解如下SISO系统的能观规范I形和II形。,Mat
21、lab程序m4-9如下。,能观规范形(4/4),Matlab程序m4-9执行结果如下。,例4-20计算结果,结果完全一致,系统实现(1/2),4.8.4 系统实现4.6节介绍的系统实现问题,讨论的是由传递函数阵如何求系统的状态空间模型实现以及最小实现问题,所实现的状态空间模型主要包括能控规范I/II形、能观规范I/II形。Matlab中提供的建立状态空间模型的系统实现函数ss()和canon()只能用于建立对角线规范形和SISO系统的能控规范I形,没有提供建立其他规范形的可直接调用的函数。编著者根据系统实现的方法,开发了相应的建立SISO与MIMO系统的能控规范形的函数ctr_canon和建立
22、能观规范形的函数obsv_canon。,系统实现(2/2),下面就分别介绍建立能控规范形能观规范形的编著者设计的Matlab函数。,能控规范形(1/3),1. 能控规范形由传递函数阵求能控规范形实现的函数ctr_canon与4.8.3节介绍的能控规范形的函数ctr_canon()为一个函数,但输入的格式不同。通过该函数,用户可以方便地求解SISO和MIMO系统的传递函数矩阵的能控规范I/II形2种实现。应用于系统实现问题时,函数ctr_canon的主要调用格式为sys_ctr=ctr_canon(sys, type)其中sys为系统传递函数阵模型;sys_ctr为所求得的能控规范形实现,typ
23、e为所求的能控规范形的类型。对应于能控规范I/II形2种模型,符号串type分别为1st和2nd。,能控规范形(2/3),Matlab问题4-10 试在Matlab中求解例4-23的如下系统的能控规范I形实现。,Matlab程序m4-10如下。,能控规范形(3/3),Matlab程序m4-10执行结果如下。,例4-23计算结果,结果完全一致,能观规范形(1/3),2. 能观规范形由传递函数阵求系统能观规范形实现的函数obsv_canon与4.8.3节介绍的建立能观规范形的函数obsv_canon()为一个函数,但输入的格式不同。通过该函数,用户可以方便地求解SISO和MIMO系统的传递函数矩阵
24、的能观规范I/II形2种实现。应用于系统实现问题时,函数obsv_canon的主要调用格式为sys_obsv=obsv_canon(sys, type)其中,sys为系统传递函数阵模型,sys_obsv为所求得的能观规范形实现,type为所求的能观规范形的类型。,能观规范形(2/3),对应于能观规范I/II形2种模型,符号串type分别为1st和2nd。Matlab问题4-11 试在Matlab中求解Matlab问题4-10的系统的能观规范II形。 Matlab程序m4-11如下。,能观规范形(3/3),Matlab程序m4-11执行结果如下。,4.7.2节计算结果,结果完全一致,最小实现(1
25、/1),3. 最小实现系统的状态空间最小实现是指传递函数阵实现中维数最小的实现,其最小实现的充分必要条件为状态能控且能观。最小实现代表了系统最简单、最经济的结构,它给系统分析与综合带来低成本、高效率。系统实现主要有求状态空间模型的最小实现和传递函数阵的最小实现。下面分别介绍如何运用Matlab求解这2个问题。,状态空间模型的最小实现(1/5),(1) 状态空间模型的最小实现求状态空间模型的最小实现的方法是对其进行能控能观分解,所求得的能控能观子系统即为其最小实现。Matlab提供了可以直接对系统的状态空间模型求最小实现的函数minreal()。函数minreal()的主要调用格式为min_sy
26、s,T = minreal(sys)其中输入sys为给定的状态空间模型;min_sys为求得的最小实现状态空间模型;T为求最小实现进行的模型变换的变换矩阵。,MIMO传递函数阵的最小实现(2/5),函数min_tf2ss()的源程序如下:,MIMO传递函数阵的最小实现(3/5),函数min_tf2ss()的调用格式为:min_sys= min_tf2ss(sys_tf)其中输入sys_tf为给定的传递函数模型;min_sys为求得的最小实现状态空间模型。,MIMO传递函数阵的最小实现(4/5),Matlab问题4-12 试在Matlab中例4-24的如下系统的最小实现。,Matlab程序m4-
27、12如下。,MIMO传递函数阵的最小实现(5/5),Matlab程序m4-12执行结果如下。,例4-24计算结果,结果完全一致,本章小结(1/3),本章小结本章讨论线性系统的两个重要的结构性质状态能控性与能观性的分析问题。能控性与能观性描述了系统的本质特征,是系统分析中主要考量的性质、控制系统设计综合时主要的依据。本章中,4.1至4.3节定义了线性连续系统与线性离散系统的状态能控性与能观性,并作了直观意义的解释,证明了能控性与能观性的代数判据和模态判据。这为进行系统的结构分析、状态反馈系统与状态观测器的设计打下基础。,本章小结(2/3),4.4节介绍了线性定常系统的对偶性定义与对偶性原理。能控
28、性与能观性的对偶性深刻揭示了系统的结构本质,并为大大简化系统分析与设计综合过程提供了依据。4.5节讨论了系统的能控能观分解,揭示了系统结构和状态空间上的可分解性,使得在系统分析与设计综合时能抓住问题的本质,做到有的放矢。本节还讨论了传递函数零极点相消与状态能控能观性的关系,为传递函数与状态空间模型之间架起了一座桥。4.6节引入了多个能控与能观规范形。规范形的引入,使得我们能够更好地抓住系统的本质特征,更便捷地进行系统分析以及在状态反馈控制、观测器等方面的设计综合。,本章小结(3/3),4.7节讨论系统实现问题,即由传递函数阵建立状态空间模型问题,是状态空间分析的基础。本节的最小实现定义及判据,深刻地揭示了线性系统的最简单、最经济结构。最后,4.8节介绍了状态能控性/能观性判定、系统能控能观分解、能控/能观规范形变换以及能控/能观规范形实现等问题基于Matlab语言的程序编制和计算方法。,