2.5.3 伝達関数表現から状態空間表現への変換と同値変換


 関数 "tf" により伝達関数表現を定義
>> tf_P = tf(4*[1 2],[1 3 4 2])
 
伝達関数:
       4 s + 8
---------------------
s^3 + 3 s^2 + 4 s + 2


 関数 "ss" により伝達関数表現を状態空間表現(可制御標準形や可観測標準形ではない)へ変換
>> ss_P = ss(tf_P)
 
a = 
       x1  x2  x3
   x1  -3  -2  -1
   x2   2   0   0
   x3   0   1   0
 
b = 
       u1
   x1   2
   x2   0
   x3   0
 
c = 
       x1  x2  x3
   y1   0   1   2
 
d = 
       u1
   y1   0
 
連続時間モデル 

 関数 "ssdata" により状態空間表現の係数行列を抽出
>> [A,B,C,D] = ssdata(ss_P)
A =
    -3    -2    -1
     2     0     0
     0     1     0
B =
     2
     0
     0
C =
     0     1     2
D =
     0

 関数 "tf2ss" により伝達関数表現を状態空間表現((2.63) 式とは異なる可制御標準形)へ変換し,さらに,
  関数 "ss2ss" により (2.63) 式の可制御標準形へ同値変換 ...... M ファイル state_space_ss2ss.m (p.31)
clear
format compact

numP = [ 4  8 ];
denP = [ 1  3  4  2 ];
[A,B,C,D] = tf2ss(numP,denP)
ss_P = ss(A,B,C,D);

T = [ 0  0  1
      0  1  0
      1  0  0 ];
ss_Pb = ss2ss(ss_P,T);
[Ac,Bc,Cc,Dc] = ssdata(ss_Pb)
>> state_space_ss2ss
A =                      ...... (2.63) 式とは異なる可制御標準形
    -3    -4    -2
     1     0     0
     0     1     0
B =
     1
     0
     0
C =
     0     4     8
D =
     0
Ac =                     ...... (2.63) 式の可制御標準形
     0     1     0
     0     0     1
    -2    -4    -3
Bc =
     0
     0
     1
Cc =
     8     4     0
Dc =
     0