N維LTI系統(tǒng)的能控、能觀性分解的matlab實現
LTI 即線性定常系統(tǒng)
以下只對能控性矩陣講解
如果對于能控性矩陣不滿秩,則可以進行能控性矩陣分解,把他變成能控部分和不能控部分
(能控也就指的是傳遞函數零極點不會對消)
matlab 提供了很多關于矩陣的函數,極大的方便了工程運算
比如 tf、ss、zpk 空間模型快速轉換、rank 求秩、rref 求最大線性無關組,今天就用 matlab 提供的函數來實現一下能控能觀系統(tǒng)分解
首先寫出一個求能控性矩陣的 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的行和列進行索引就可以找到可控的子系統(tǒng)啦
其中A2,B2,C2代表變換后的空間表達式參數
A3,B3,C3代表能控子系統(tǒng)的空間表達式參數
對于能觀性矩陣的分解,只需要把矩陣的轉置傳入rref中就可以啦!由于大體相同,不再贅述
以下是完整代碼,請到2019以上的matlab版本,實時腳本中運行
作者:Onion
郵箱:bigonion@bigonion.cn
聲明:未經本人同意,禁止轉載、搬運、抄襲!
NameSpace:https://bigonion.cn
Origin:https://bigonion.cn/blog
本文使用markdown++進行格式轉換