已知A/B/C/D矩阵的状态空间模型如何实现输入输出集变换
原状态空间模型到新输入输出集的直接变换方法
该变换全程不需要将状态空间模型转换为传递函数,仅通过原A、B、C、D矩阵的分块和线性代数运算即可实现。
前置矩阵分块
原模型输出Y共9维,其中前5维为新输入U_new,后4维为新输出Y_new,首先将原C、D矩阵按输出维度拆分为4个子块:
C1:原C矩阵的前5行,对应y1~y5的状态输出系数,维度为5×23C2:原C矩阵的后4行,对应y6~y9的状态输出系数,维度为4×23D1:原D矩阵的前5行,对应y1~y5的原输入馈通系数,维度为5×5,满足U_new = C1*X + D1*UD2:原D矩阵的后4行,对应y6~y9的原输入馈通系数,维度为4×5,满足Y_new = C2*X + D2*U
变换存在的前提条件
必须保证5×5的子矩阵D1满秩可逆,否则原输入U无法通过新输入U_new和状态X唯一表示,不存在和原模型同状态维度的标准状态空间实现,需要先处理代数约束做降阶才能得到等效模型。
新状态空间矩阵计算
当D1可逆时,首先从U_new的表达式反解原输入U:U = D1⁻¹ * (U_new - C1*X)
将该式分别代入原状态方程和新输出的表达式,即可直接得到新模型的四个系数矩阵:
- 新状态方程
X' = A_new*X + B_new*U_new对应系数:A_new = A - B * D1⁻¹ * C1,维度23×23,和原模型状态维度一致B_new = B * D1⁻¹,维度23×5,匹配新输入的维度
- 新输出方程
Y_new = C_new*X + D_new*U_new对应系数:C_new = C2 - D2 * D1⁻¹ * C1,维度4×23D_new = D2 * D1⁻¹,维度4×5,匹配新输入、新输出的维度
校验提示:计算完成后可选取一组测试输入,分别代入原模型和新得到的模型做仿真,对比输出结果一致性即可验证计算正确性。
计算流程清单
- 按输出子集划分规则拆分原C、D矩阵为C1、C2、D1、D2四个子块
- 计算D1的行列式或秩,校验其可逆性
- 求解D1的逆矩阵
- 代入上述公式分别计算A_new、B_new、C_new、D_new
- 选取测试用例验证新模型的输入输出特性和原模型一致
内容的提问来源于stack exchange,提问作者A1ireza
相关产品推荐
相关产品推荐

