主要内容

ss2ss

状态空间模型的状态坐标变换

    说明

    ss2ss 对状态空间模型的状态向量 x 执行相似变换 z = Tx。有关详细信息,请参阅算法

    sysT = ss2ss(sys,T) 使用指定的变换矩阵 Tsys 执行状态坐标变换。矩阵 T 必须为可逆矩阵。

    示例

    示例

    全部折叠

    对状态空间模型执行相似变换。

    生成随机状态空间模型和变换矩阵。

    rng(0)
    sys = rss(5);  
    t = randn(5);

    执行变换,并绘制两个模型的频率响应。

    tsys = ss2ss(sys,t);
    bode(sys,'b',tsys,'r--')
    legend

    MATLAB figure

    两个模型的响应非常接近。

    ss2ss 仅对广义模型的数值部分的状态向量应用状态变换。

    创建一个 genss 模型。

    sys = rss(2,2,2) * tunableSS('a',2,2,3) + tunableGain('b',2,3)
    Generalized continuous-time state-space model with 2 outputs, 3 inputs, 4 states, and the following blocks:
      a: Tunable 2x3 state-space model, 2 states, 1 occurrences.
      b: Tunable 2x3 gain, 1 occurrences.
    Model Properties
    
    Type "ss(sys)" to see the current value and "sys.Blocks" to interact with the blocks.
    

    指定变换矩阵并获得变换结果。

    T = [1 -2;3 5];
    tsys = ss2ss(sys,T)
    Generalized continuous-time state-space model with 2 outputs, 3 inputs, 4 states, and the following blocks:
      a: Tunable 2x3 state-space model, 2 states, 1 occurrences.
      b: Tunable 2x3 gain, 1 occurrences.
    Model Properties
    
    Type "ss(tsys)" to see the current value and "tsys.Blocks" to interact with the blocks.
    

    对两个模型进行分解。

    [H,B,~,~] = getLFTModel(sys);
    [H1,B1,~,~] = getLFTModel(tsys);

    对从分解 sys 得到的模型单独进行变换。

    H2 = ss2ss(H,T);

    将此变换后的模型与从分解 tsys 得到的模型进行比较。

    isequal(H1,H2)
    ans = logical
       1
    
    

    两个模型相等。

    文件 icEngine.mat 包含一个数据集,其中有 1500 个以 0.04 秒的采样率采集的输入-输出样本。输入 u(t) 是控制旁通怠速空气阀 (BPAV) 的电压 (V),输出 y(t) 是发动机转速 (RPM/100)。

    使用 icEngine.mat 中的数据创建一个具有可辨识参数的状态空间模型。

    load icEngine.mat
    z = iddata(y,u,0.04);
    sys = n4sid(z,4,'InputDelay',2);

    指定一个随机变换矩阵。

    T = randn(4);

    获得变换结果。

    sysT = ss2ss(sys,T);

    比较频率响应。

    bode(sys,'b',sysT,'r--')
    legend

    MATLAB figure

    响应非常接近。

    ss2ss 还支持对具有复系数的模型执行相似变换。

    对于此示例,生成一个具有复系数的随机状态空间模型。

    rng(0)
    sys = ss(randn(5)+1i*randn(5),randn(5,3),randn(2,5)+1i*randn(2,5),0,.1);

    指定一个包含复数据的变换矩阵。

    T = randn(5)+1i*randn(5);

    获得变换结果。

    sysT = ss2ss(sys,T);

    比较频率响应的奇异值。

    sigma(sys,'b',sysT,'r--')
    legend

    MATLAB figure

    两个分支的响应非常接近。

    输入参数

    全部折叠

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

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

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

      对于此类模型,状态变换仅应用于模型的数值部分的状态向量。有关这些模型的分解的详细信息,请参阅 getLFTModelInternal Structure of Generalized Models

    • 辨识的状态空间 idss (System Identification Toolbox) 模型。(使用辨识模型需要 System Identification Toolbox™ 软件。)

    如果 sys 是状态空间模型数组,ss2ss 会将变换 T 应用于数组中的每个单独模型。

    变换矩阵,指定为 n×n 矩阵,其中 n 是状态数。T 是状态空间模型 sys 的状态向量与变换后的模型 sysT 的状态向量之间的变换关系(请参阅算法)。

    输出参量

    全部折叠

    变换后的状态空间模型,以与 sys 相同类型的动态系统模型形式返回。

    算法

    ss2ss 对状态空间模型的状态向量 x 执行相似变换 x¯=Tx

    下表总结了 ss2ss 针对每种模型形式返回的变换结果。

    输入模型变换后的模型

    具有以下形式的显式状态空间模型:

    x˙=Ax+Buy=Cx+Du

    x¯˙=TAT1x¯+TBuy=CT1x¯+Du

    具有以下形式的描述符形式的(隐式)状态空间模型:

    Ex˙=Ax+Buy=Cx+Du

    ET1x¯˙=AT1x¯+Buy=CT1x¯+Du

    具有以下形式的辨识状态空间 (idss) 模型:

    dxdt=Ax+Bu+Key=Cx+Du+e

    x¯˙=TAT1x¯+TBu+TKey=CT1x¯+Du+e

    版本历史记录

    在 R2006a 之前推出

    全部展开