clc; clear; close all;
%% ===== G1(s) =====
num1 = [1 5 4];
den1 = [1 6 11 6];
G1 = tf(num1, den1);
disp('G1(s) = ');
G1
%% G1 controllable canonical form
Ac1 = [0 1 0;
0 0 1;
-6 -11 -6];
Bc1 = [0; 0; 1];
Cc1 = [4 5 1];
Dc1 = 0;
sys1_c = ss(Ac1,Bc1,Cc1,Dc1);
disp('G1 controllable canonical form:');
sys1_c
disp('Transfer function from controllable form:');
tf(sys1_c)
rank_ctrb_G1c = rank(ctrb(Ac1,Bc1))
rank_obsv_G1c = rank(obsv(Ac1,Cc1))
%% G1 observable canonical form
Ao1 = [0 0 -6;
1 0 -11;
0 1 -6];
Bo1 = [4; 5; 1];
Co1 = [0 0 1];
Do1 = 0;
sys1_o = ss(Ao1,Bo1,Co1,Do1);
disp('G1 observable canonical form:');
sys1_o
disp('Transfer function from observable form:');
tf(sys1_o)
rank_ctrb_G1o = rank(ctrb(Ao1,Bo1))
rank_obsv_G1o = rank(obsv(Ao1,Co1))
%% ===== G2(s) =====
num2 = [1 3];
den2 = [1 2 5];
G2 = tf(num2, den2);
disp('G2(s) = ');
G2
%% G2 controllable canonical form
Ac2 = [0 1;
-5 -2];
Bc2 = [0; 1];
Cc2 = [3 1];
Dc2 = 0;
sys2_c = ss(Ac2,Bc2,Cc2,Dc2);
disp('G2 controllable canonical form:');
sys2_c
disp('Transfer function from controllable form:');
tf(sys2_c)
rank_ctrb_G2c = rank(ctrb(Ac2,Bc2))
rank_obsv_G2c = rank(obsv(Ac2,Cc2))
%% G2 observable canonical form
Ao2 = [0 -5;
1 -2];
Bo2 = [3; 1];
Co2 = [0 1];
Do2 = 0;
sys2_o = ss(Ao2,Bo2,Co2,Do2);
disp('G2 observable canonical form:');
sys2_o
disp('Transfer function from observable form:');
tf(sys2_o)
rank_ctrb_G2o = rank(ctrb(Ao2,Bo2))
rank_obsv_G2o = rank(obsv(Ao2,Co2))
留言
張貼留言