tf2ss
|
伝達関数の係数の対から状態空間表現への変換
|
<書式> {A,B,C,D} = tf2ss(NUM,den) Matrix NUM,den; //伝達関数の分子,伝達関数の分母 Matrix A,B,C,D; //状態空間表現の4つの行列 | |
備考1:状態空間表現は次のような式であらわされます. 上で用いている記号(A,B,C,D)と同じです. . x = Ax + Bu y = Cx + Du 備考2:引数NUMとdenについて. 伝達関数を分子(numerator)と分母(denominator)にわけています. NUM(s) G(s) = -------- den(s) NUMとdenはそれぞれMatrix型になっていて,分子・分母の多項式の係数 を用いて表現します. 例えば伝達関数がつぎのような場合, ![]() このようになります. NUM=[0,1,d]; den=[a,b,c]; | |
<プログラム例> /* 2次遅れ系の伝達関数 1 G(s)= -------------------- 0.1s^2 + 0.7s +1 から状態空間表現を求める */ Func void main() { Matrix NUM,den; //伝達関数の分子,伝達関数の分母 Matrix A,B,C,D; //状態空間表現の4つの行列 NUM=[0,0,1]; //伝達関数の分子の係数 den=[0.1,0.7,1]; //伝達関数の分母の係数 {A,B,C,D} = tf2ss(NUM,den); print(A); print(B); print(C); print(D); } |
tf2tfn
|
伝達関数の係数の対から伝達関数への変換
|
<書式> g = tf2tfn(NUM,den) g = tf2tfn(NUM,den,i) Rational g; //伝達関数 Matrix NUM,den; //伝達関数の分子,伝達関数の分母 Integer i; //出力番号 | |
備考1:伝達関数の分母分子での表現形式(Matrix)から,多項式型(Rational)での 表現形式に変換します. 備考2:引数NUMとdenについて. 伝達関数を分子(numerator)と分母(denominator)にわけています. NUM(s) G(s) = -------- den(s) NUMとdenはそれぞれMatrix型になっていて,分子・分母の多項式の係数 を用いて表現します. 例えば伝達関数がつぎのような場合, ![]() このようになります. NUM=[0,1,d]; den=[a,b,c]; 備考3:引数iについて. 1入力多出力システムの場合,内部に複数の伝達関数を持っています. このようなシステムにおいて,出力番号iを指定することで特定の伝達 関数を得ることができます. | |
<プログラム例> /* 伝達関数 1 G(s)= -------------------- 0.1s^2 + 0.7s +1 をMatrix型からRational型に変換する */ Func void main() { Matrix NUM,den; //伝達関数の分子,伝達関数の分母 Rational g; //伝達関数 NUM=[0,0,1]; //伝達関数の分子の係数 den=[0.1,0.7,1]; //伝達関数の分母の係数 g = tf2tfn(NUM,den); print(g); } |
tf2tfm
|
伝達関数の係数の対から伝達関数行列への変換
|
<書式> G = tf2tfm(NUM,den) RaMatrix G; //伝達関数行列 Matrix NUM,den; //伝達関数の分子,伝達関数の分母 | |
備考1:伝達関数の分母分子での表現形式(Matrix)から,伝達関数行列(RaMatrix) に変換します. 備考2:引数NUMとdenについて. 伝達関数を分子(numerator)と分母(denominator)にわけています. NUM(s) G(s) = -------- den(s) NUMとdenはそれぞれMatrix型になっていて,分子・分母の多項式の係数 を用いて表現します. 例えば伝達関数がつぎのような場合, ![]() このようになります. NUM=[0,1,d]; den=[a,b,c]; | |
<プログラム例> /* 伝達関数 1 G(s)= -------------------- 0.1s^2 + 0.7s +1 をMatrix型からRaMatrix型に変換する */ Func void main() { Matrix NUM,den; //伝達関数の分子,伝達関数の分母 RaMatrix G; //伝達関数行列 NUM=[0,0,1]; //伝達関数の分子の係数 den=[0.1,0.7,1]; //伝達関数の分母の係数 G = tf2tfm(NUM,den); print(G); } |
tf2zp
|
伝達関数の係数の対から極零の対への変換
|
<書式> {z,p,k} = tf2zp(NUM,den) CoMatrix z,p; //零点,極 Matrix k; //ゲイン Matrix NUM,den; //伝達関数の分子,伝達関数の分母 | |
備考1:極pと零点z,ゲインkについて. 伝達関数を次のように表現しています.符号に注意しましょう. (s-z1)(s-z2)...(s-zn) G(s) = k ----------------------- (s-p1)(s-p2)...(s-pn) 備考2:引数NUMとdenについて. 伝達関数を分子(numerator)と分母(denominator)にわけています. NUM(s) G(s) = -------- den(s) NUMとdenはそれぞれMatrix型になっていて,分子・分母の多項式の係数 を用いて表現します. 例えば伝達関数がつぎのような場合, ![]() このようになります. NUM=[0,1,d]; den=[a,b,c]; | |
<プログラム例> /* 伝達関数 s^2 + 9s + 20 G(s)=--------------------- s^3 + 6s^2 + 11s +6 から極零の対を求める */ Func void main() { CoMatrix z,p; //零点,極 Matrix k; //ゲイン Matrix NUM,den; //伝達関数の分子,伝達関数の分母 NUM=[0,1,9,20]; den=[1,6,11,6]; {z,p,k} = tf2zp(NUM,den); print(z); print(p); print(k); } |