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))

留言

這個網誌中的熱門文章