主要内容

canon

(不推荐)典型状态空间实现

不推荐使用 canon请改用 modalrealcompreal (自 R2023b 起)有关如何更新代码的详细信息,请参阅版本历史记录

说明

csys = canon(sys,type) 将线性模型 sys 变换为典型实现 csystype 指定 csys 是采用模态形式还是伴随形式。

示例

csys = canon(sys,'modal',condt) 指定块对角化变换的条件数的上界 condt。当 csys 中存在非常接近的特征值时,请使用 condt 参数。

[csys,T]= canon(___) 还返回状态坐标变换矩阵 T,该矩阵将状态空间模型 sys 的状态与 csys 的状态关联。

示例

示例

全部折叠

假设您有飞机的状态空间模型,其输入为升降舵偏转角 δ ,输出为飞机俯仰角 θ

[ α ˙ q ˙ θ ˙ ] = [ - 0 . 3 1 3 5 6 . 7 0 - 0 . 0 1 3 9 - 0 . 4 2 6 0 0 5 6 . 7 0 ] [ α q θ ] + [ 0 . 2 3 2 0 . 0 2 0 3 0 ] [ δ ] y = [ 0 0 1 ] [ α q θ ] + [ 0 ] [ δ ]

将模型数据加载到工作区,并创建状态空间模型 sys

load('aircraftPitchSSModel.mat');
sys = ss(A,B,C,D)
sys =
 
  A = 
            x1       x2       x3
   x1   -0.313     56.7        0
   x2  -0.0139   -0.426        0
   x3        0     56.7        0
 
  B = 
           u1
   x1   0.232
   x2  0.0203
   x3       0
 
  C = 
       x1  x2  x3
   y1   0   0   1
 
  D = 
       u1
   y1   0
 
Continuous-time state-space model.

将得到的状态空间模型 sys 转换为可控制的伴随形式。

csys = canon(sys,'companion')
csys =
 
  A = 
              x1         x2         x3
   x1          0          0  1.914e-15
   x2          1          0    -0.9215
   x3          0          1     -0.739
 
  B = 
       u1
   x1   1
   x2   0
   x3   0
 
  C = 
            x1       x2       x3
   y1        0    1.151  -0.6732
 
  D = 
       u1
   y1   0
 
Continuous-time state-space model.

csyssys 的可控制的伴随形式。

假设您有小车上倒立摆的状态空间模型,其输出为小车位移 x 和摆角 θ 。控制输入 u 是作用于小车的水平力。

[ x ˙ x ¨ θ ˙ θ ¨ ] = [ 0 1 0 0 0 - 0 . 1 3 0 0 0 0 1 0 - 0 . 5 3 0 0 ] [ x x ˙ θ θ ˙ ] + [ 0 2 0 5 ] u y = [ 1 0 0 0 0 0 1 0 ] [ x x ˙ θ θ ˙ ] + [ 0 0 ] u

首先,将状态空间模型 sys 加载到工作区。

load('pendulumCartSSModel.mat','sys');

sys 转换为模态形式并提取块大小。

[csys,T] = canon(sys,'modal')
msys =
 
  A = 
           x1      x2      x3      x4
   x1       0       0       0       0
   x2       0   -0.05       0       0
   x3       0       0  -5.503       0
   x4       0       0       0   5.453
 
  B = 
          u1
   x1  1.875
   x2  6.298
   x3   12.8
   x4  12.05
 
  C = 
              x1         x2         x3         x4
   y1         16     -4.763  -0.003696   0.003652
   y2          0   0.003969   -0.03663    0.03685
 
  D = 
       u1
   y1   0
   y2   0
 
Continuous-time state-space model.
T = 4×4

    0.0625    1.2500   -0.0000   -0.1250
         0    4.1986    0.0210   -0.4199
         0    0.2285  -13.5873    2.4693
         0   -0.2251   13.6287    2.4995

csyssys 的模态典型形式,而 T 表示 syscsys 的状态向量之间的变换关系。

输入参数

全部折叠

动态系统,指定为 SISO 或 MIMO 动态系统模型。您可以使用的动态系统包括:

  • 连续时间或离散时间数值 LTI 模型,如 tfzpksspid 模型。

  • 广义或不确定的 LTI 模型,如 genssuss (Robust Control Toolbox) 模型。(使用不确定模型需要 Robust Control Toolbox™ 软件。)

    生成的典型状态空间模型假定

    • 对于可调控制设计模块,采用可调组件的当前值。

    • 对于不确定的控制设计模块,采用标称模型值。

  • 辨识的 LTI 模型,如 idtf (System Identification Toolbox)idss (System Identification Toolbox)idproc (System Identification Toolbox)idpoly (System Identification Toolbox)idgrey (System Identification Toolbox) 模型。(使用辨识模型需要 System Identification Toolbox™ 软件。)

您可以使用频率响应数据模型,如 frd 模型。

变换类型,指定为 'modal''companion'。如果未指定 type,则 canon 默认将指定的动态系统模型转换为模态典型形式。

  • 模态形式

    在模态形式中,A 是块对角矩阵。对于实数特征值,块大小通常为 1×1;对于复数特征值,块大小通常为 2×2。然而,如果存在重复特征值或邻近特征值簇,则块大小可能更大。

    例如,对于具有特征值 (λ1,σ±jω,λ2) 的系统,模态 A 矩阵的形式为:

    Am=[λ10000σω00ωσ0000λ2].

  • 伴随形式

    在伴随实现中,系统的特征多项式将显式地出现在 A 矩阵的最右列。对于具有如下特征多项式的系统:

    P(s)=sn+αn1sn1+αn2sn2++α1s+α0,

    对应的伴随 A 矩阵为

    Accom=[01000001000001000001α0α1α2α3  αn1],Bccom=[100].

    伴随变换要求系统能够从第一个输入实现可控。向伴随形式的变换基于可控性矩阵,对于中等阶数的系统,该矩阵在数值上几乎始终是奇异值。因此,应尽可能避免使用它。

块对角化变换的条件数的上界,指定为正标量。仅当 type 设置为 'modal' 时,此参量才可用。

增大 condt 可减小 csysA 矩阵中特征值簇的规模。设置 condt = Inf 可使矩阵 A 对角化。

输出参量

全部折叠

动态模型的典型状态空间形式,以 ss 模型对象形式返回。csyssys 在由 type 指定的典型形式下的状态空间实现。

变换矩阵,以 n×n 矩阵形式返回,其中 n 是状态的数量。T 是状态空间模型 sys 的状态向量 xcsys 的状态向量 xc 之间的变换关系:

xc = Tx

此参量仅在 sysss 模型对象时可用。

限制

  • 您无法使用频率响应数据模型来转换为典型状态空间形式。

  • 伴随形式在大多数状态空间计算中会表现出病态,也就是说,向伴随形式的变换基于可控性矩阵,对于中等阶数的系统,该矩阵在数值上几乎始终是奇异值。因此,应尽可能避免使用它。

算法

canon 命令使用 bdschur 命令将 sys 转换为模态形式并计算变换矩阵 T。如果 sys 不是状态空间模型,canon 会先使用 ss 将其转换为状态空间形式。

转换为伴随形式时采用基于可控性矩阵的状态相似变换 [1]

参考

[1] Kailath, T. Linear Systems, Prentice-Hall, 1980.

版本历史记录

在 R2006a 之前推出

全部展开

另请参阅

| | | | | | | | (Robust Control Toolbox) | (System Identification Toolbox) | (System Identification Toolbox) | (System Identification Toolbox) | (System Identification Toolbox) | (System Identification Toolbox)