P9 线性系统状态空间分析-《Matlab/Simulink与控制系统仿真》程序指令总结
《Matlab/Simulink與控制系統(tǒng)仿真》程序指令總結(jié)
- Matlab_Simulink_BookExample
- 9. 線性系統(tǒng)狀態(tài)空間分析
- 9.2.4 狀態(tài)方程求解
- 9.2.4.2 矩陣指數(shù)的性質(zhì)及求法
- 9.2.4.1 齊次方程求解
- 9.2.4.3 非齊次方程求解
- 9.1 Matlab 函數(shù)
- 例題 9_2
- 例題 9_3
- 例題 9_4
- 例題 9_5
- 例題 9_6
- 例題 9_7
- 例題 9_8
- 例題 9_9
- 例題 9_10
- 例題 9_11
- 例題 9_12
書中詳細(xì)實(shí)例代碼可見:Github
更多關(guān)于基礎(chǔ)原理的講解:【控制】第九章-線性系統(tǒng)的狀態(tài)空間描述
Matlab_Simulink_BookExample
圖書:《Matlab/Simulink與控制系統(tǒng)仿真》
9. 線性系統(tǒng)狀態(tài)空間分析
狀態(tài)空間描述具有以下特點(diǎn):
9.2.4 狀態(tài)方程求解
9.2.4.2 矩陣指數(shù)的性質(zhì)及求法
對(duì)于線性定常系統(tǒng)來說,齊次方程的求解可歸結(jié)為求矩陣指數(shù) eA(t?t0)e^{A(t-t_0)}eA(t?t0?) 。eA(t?t0)e^{A(t-t_0)}eA(t?t0?) 具有以下基本性質(zhì):
(性質(zhì)1)組合性質(zhì),從
(性質(zhì)12)矩陣指數(shù) eAte^{At}eAt 可表示為有限項(xiàng)之和,即 eAt=∑i=0n?1Aiai(t)e^{At} = \sum_{i=0}^{n-1} A^i a_i(t)eAt=i=0∑n?1?Aiai?(t)
Proof. 見書 P243頁
9.2.4.1 齊次方程求解
X(t)=eA(t?t0)X(t0)X(t) = e^{A(t-t_0)} X(t_0)X(t)=eA(t?t0?)X(t0?)
X(t)=eAtX0X(t) = e^{At}X_{0}X(t)=eAtX0?
9.2.4.3 非齊次方程求解
X(t)=eA(t?t0)X(t0)+eAt∫t0te?AτBU(τ)dτX(t) = e^{A(t-{t_0})} X(t_0) + e^{At}\int_{t_0}^{t} e^{-A\tau} BU(\tau)d\tauX(t)=eA(t?t0?)X(t0?)+eAt∫t0?t?e?AτBU(τ)dτ
9.1 Matlab 函數(shù)
tf2ss() 將傳遞函數(shù)模型轉(zhuǎn)換為狀態(tài)空間模型
zp2ss() 將零極點(diǎn)模型轉(zhuǎn)換為狀態(tài)空間模型
ss 直接建立狀態(tài)空間模型
canon() 將系統(tǒng)直接轉(zhuǎn)化為對(duì)角型的函數(shù)
ss2ss() 進(jìn)行狀態(tài)空間表達(dá)式的線性變換的函數(shù)
rat() 返回一個(gè)有理近似值的字符向量
ctrb() 求取系統(tǒng)可控判別矩陣的函數(shù)
obsv() 求取系統(tǒng)可觀判別矩陣的函數(shù)
ctrbf() 系統(tǒng)進(jìn)行能控性分解的函數(shù)
obsvf() 系統(tǒng)進(jìn)行能觀測(cè)性分解的函數(shù)
lyap() lyap2() dlyap() 求解李亞普諾夫方程函數(shù)
例題 9_2
% Page249:已知開環(huán)傳函,求狀態(tài)空間模型 clear; clc;% G1 函數(shù)的分子、分母多項(xiàng)式 num = [2, 8, 6]; den = [1. 8, 16, 6]; % 將 G1 傳遞函數(shù)模型轉(zhuǎn)換為狀態(tài)空間模型 [A1, B1, C1, D1] = tf2ss(num, den); % G2 函數(shù)的零極點(diǎn)、增益 z = [-1, -3]; p = [0, -2, -8]; k = 2; % 將 G2 傳遞函數(shù)模型轉(zhuǎn)換為狀態(tài)空間模型 [A2, B2, C2, D2] = zp2ss(z, p, k);例題 9_3
% Page250:已知系統(tǒng)的動(dòng)力學(xué)微分方程,求系統(tǒng)的狀態(tài)空間模型 clear; clc;% 微分方程輸入量、輸出量的系數(shù) num = [1, 2, 1]; den = [1, 3, 3, 1]; % 建立傳遞函數(shù)模型 sys1 = tf(num, den); % 求狀態(tài)空間表達(dá)式 sys = ss(sys1);例題 9_4
% Page251:已知系統(tǒng)狀態(tài)空間模型,求系統(tǒng)的對(duì)角標(biāo)準(zhǔn)型 clear; clc;A = [0 1 0; 0 0 1; -6 -11 -6]; B = [1; 0; 0]; C = [1 1 0]; D = 0; % 生成對(duì)角標(biāo)準(zhǔn)型 [As, Bs, Cs, Ds, Ts] = canon(A, B, C, D, 'mod');例題 9_5
% Page252:已知系統(tǒng)傳遞函數(shù),求系統(tǒng)約當(dāng)標(biāo)準(zhǔn)型 clear; clc;num1 = [2, 1]; den1 = [1, 7, 14, 8]; % 求系統(tǒng)的分式表達(dá)式 [r1, p1, k1] = residue(num1, den1); % 對(duì)分式結(jié)果進(jìn)行變換,得到約當(dāng)標(biāo)準(zhǔn)型 A1 = diag(p1); B1 = ones(length(r1), 1); C1 = rat(r1); D1 = 0;例題 9_6
% Page253:已知矩陣,求解狀態(tài)轉(zhuǎn)移矩陣 clear; clc;A = [0 1 0;0 0 1;1 -3 3;]; % 狀態(tài)轉(zhuǎn)移時(shí)刻 t = 0.2; % 計(jì)算狀態(tài)轉(zhuǎn)移矩陣 Phi = expm(A*t);例題 9_7
% Page253:已知狀態(tài)空間模型,求解脈沖響應(yīng)、階躍響應(yīng)、響應(yīng)曲線 clear; clc;A = [-2 -2.5 -0.5; 1 0 0; 0 1 0]; B = [1; 0; 0]; C = [0 1.5 1]; D = []; % 建立狀態(tài)空間模型 G = ss(A,B,C,D); % 仿真時(shí)間 t = [0:0.1:20]'; % 計(jì)算脈沖響應(yīng)并添加?xùn)鸥?% impulse(G); grid on % 計(jì)算階躍響應(yīng)并添加?xùn)鸥?% step(G); grid on% 接著輸入如下代碼 % 初始狀態(tài) xo = [1; 0; 2]; % 輸入量 u u(1, 1:20) = 2*ones(1, 20); u(1, 21:201) = 0.5*ones(1, 181); % 計(jì)算輸入響應(yīng) [y, t, x] = lsim(G, u, t, xo); % 繪制曲線 plot(t,x(:,1),'-', t,x(:,2),'--', t,x(:,3),'-.') % 添加坐標(biāo)軸 xlabel('時(shí)間/秒'); ylabel('幅值'); % 添加?xùn)鸥?grid % 添加標(biāo)注 text(6, 0.3, 'x_1(t)'); text(6, -0.5, 'x_2(t)'); text(8, 1.8, 'x_3(t)');figure(2) plot(t,y)例題 9_8
% Page262:已知狀態(tài)空間模型,判斷系統(tǒng)是否可控?是否可觀? clear; clc;A = [1 0 -1; -1 -2 0; 3 0 1]; B = [1 0; 2 1; 0 2]; C = [1 0 0; 0 -1 0]; % 計(jì)算可控判別矩陣 M = ctrb(A, B); % 計(jì)算可控判別矩陣的秩 RM = rank(M); % 計(jì)算可觀判別矩陣 N = obsv(A, C); % 計(jì)算可觀判別矩陣的秩 RN = rank(N);例題 9_9
% Page263:已知狀態(tài)空間模型,判斷可控性,如果完全可控,轉(zhuǎn)化為可控 II 型 clear; clc;A = [1 2 0; 3 -1 1; 0 2 0]; B = [2; 1; 1]; C = [0 0 1]; D = 0; % 計(jì)算可控判別矩陣 T = ctrb(A, B); % 計(jì)算可控判別矩陣的秩 R = rank(T);% 計(jì)性狀態(tài)空間的線性變換 [Ac2, Bc2, Cc2, Dc2] = ss2ss(A, B, C, D, inv(T));例題 9_10
% Page263:已知狀態(tài)空間模型,求該系統(tǒng)的能觀 I 型 clear; clc;A = [1 2 0; 3 -1 1; 0 2 0]; B = [2; 1; 1]; C = [0 0 1]; D = [0]; % 計(jì)算可觀判別矩陣 T = obsv(A, C); % 進(jìn)行狀態(tài)空間的線性變換 [Ao1, Bo1, Co1, Do1] = ss2ss(A, B, C, D, T);例題 9_11
% Page264:已知狀態(tài)空間模型,進(jìn)行能控性分解和能觀性分解 clear; clc;A = [0 0 -1; 1 0 -3; 0 1 -3]; B = [1; 1; 0]; C = [0 1 -2]; % 能控性結(jié)構(gòu)分解 [Ac, Bc, Cc] = ctrbf(A, B, C); % 能觀性結(jié)構(gòu)分解 [Ao, Bo, Co] = obsvf(A, B, C);% 若想要得到標(biāo)準(zhǔn)形式 Acc = rot90(Ac, 2); Bcc = rot90(Bc, 2); Ccc = rot90(Cc, 2);例題 9_12
% Page269:已知系統(tǒng)狀態(tài)矩陣,給定正定對(duì)稱矩陣,求李亞普諾夫方程解 P clear; clc;% 狀態(tài)矩陣 A = [0 1; -1 -1]; % 給定的正定對(duì)稱矩陣 Q = [1 0; 0 1]; % 求解李亞普諾夫方程 P = lyap(A', Q);總結(jié)
以上是生活随笔為你收集整理的P9 线性系统状态空间分析-《Matlab/Simulink与控制系统仿真》程序指令总结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: P8 控制系统校正与综合-《Matlab
- 下一篇: P10 线性系统状态空间设计-《Matl