欢迎光临散文网 会员登陆 & 注册

N维LTI系统的能控、能观性分解的matlab实现

2023-01-28 01:50 作者:Big大聪花  | 我要投稿

LTI 即线性定常系统

以下只对能控性矩阵讲解

如果对于能控性矩阵不满秩,则可以进行能控性矩阵分解,把他变成能控部分和不能控部分

(能控也就指的是传递函数零极点不会对消)

matlab 提供了很多关于矩阵的函数,极大的方便了工程运算

比如 tf、ss、zpk 空间模型快速转换、rank 求秩、rref 求最大线性无关组,今天就用 matlab 提供的函数来实现一下能控能观系统分解

首先写出一个求能控性矩阵的 Uc 的判断

输入参数是 A,B,C,D


求好了 Uc 矩阵了可以用

rank(Uc)求出秩 和 length(A)做比较

不满秩就可以进行下一步分解了

假设这里是三维矩阵

我们知道要分解首先要找到这么一个向量,即从 Uc 中选取两列(维数-1)线性无关向量,再自己随意补上一个与他们俩都线性无关的列向量组成 Tc 矩阵

这里的难点就是如何找出两列线性无关的向量,并确保补上去的向量满足要求
我们当然可以自己写一个化简阶梯来判断,但 matlab 提供了一个 rref 函数

返回的 j 参数就表示 Uc 极大线性无关组所在的的列数的最小值 这样我们就可以轻松完成第一件事,从 Uc 选出两列线性无关的向量啦

这里的Uc(:,j)表示选出来的两列向量组成的矩阵,":"表示行全选 

我们要完成第二件事,其实只需要让 Uc 和单位阵 I 组成增广矩阵来找其中的极大线性无关组
还记不记得之前说过 rref 只会返回尽可能列数小的 j,这就可以保证返回的 j2 表示的列数,一定会有原来两列 Uc 和某一列单位阵,这样我们对增广矩阵进行j2列索引就可以拿到变换矩阵Tc啦

拿到Tc后就很简单了,只需要对n-1的行和列进行索引就可以找到可控的子系统啦

其中A2,B2,C2代表变换后的空间表达式参数

A3,B3,C3代表能控子系统的空间表达式参数

对于能观性矩阵的分解,只需要把矩阵的转置传入rref中就可以啦!由于大体相同,不再赘述


以下是完整代码,请到2019以上的matlab版本,实时脚本中运行


作者:Onion

邮箱:bigonion@bigonion.cn

声明:未经本人同意,禁止转载、搬运、抄袭!

NameSpace:https://bigonion.cn

Origin:https://bigonion.cn/blog


本文使用markdown++进行格式转换


N维LTI系统的能控、能观性分解的matlab实现的评论 (共 条)

分享到微博请遵守国家法律