|
ss2tf
|
状態空間表現から伝達関数の係数の対への変換
|
<書式>
{NUM,den} = ss2tf(A,B,C,D)
{NUM,den} = ss2tf(A,B,C,D,i)
Matrix NUM,den; //伝達関数の分子,伝達関数の分母
Matrix A,B,C,D; //状態空間表現の4つの行列
Integer i; //入力番号
| |
備考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];
備考3:引数iについて.
多入力のシステムの場合,i番目の入力の伝達関数を返します.
| |
<プログラム例>
Func void main()
{
Matrix NUM,den; //伝達関数の分子,伝達関数の分母
Matrix A,B,C,D; //状態空間表現の4つの行列
A=[[-1,2][-1,-3]];
B=trans([0,1]);
C=[2,0];
D=[0];
{NUM,den} = ss2tf(A,B,C,D);
print(NUM);
print(den);
}
| |
|
ss2tfn
|
状態空間表現から伝達関数への変換
|
<書式>
g = ss2tfn(A,B,C,D)
g = ss2tfn(A,B,C,D,i)
g = ss2tfn(A,B,C,D,i,j)
Rational g; //伝達関数
Matrix A,B,C,D; //状態空間表現の4つの行列
Integer i,j; //入力番号,出力番号
| |
備考1:状態空間表現は次のような式であらわされます.
上で用いている記号(x,y,A,B,C,D)と同じです.
.
x = Ax + Bu
y = Cx + Du
備考2:引数iとjについて.
多入力1出力システム,あるいは多入力多出力システムでは複数の
伝達関数を持っています.こうしたシステムでは入力番号i・出力番号j
を指定する必要があります.
| |
<プログラム例>
/*
2入力2出力システムにおいて,『入力1-出力2』間の伝達関数を求める
*/
Func void main()
{
Rational g; //伝達関数
Matrix A,B,C,D; //状態空間表現の4つの行列
Integer i,j; //入力番号,出力番号
A=[[-2,0][1,3]];
B=[[2,1][1,1]];
C=[[1,1][0,1]];
D=[[0,0][0,0]];
i=1;
j=2;
g = ss2tfn(A,B,C,D,i,j);
print(g);
}
| |
|
ss2tfm
|
状態空間表現から伝達関数行列への変換
|
<書式>
G = ss2tfm(A,B,C,D)
G = ss2tfm(A,B,C,D,i)
RaMatrix G; //伝達関数行列
Matrix A,B,C,D; //状態空間表現の4つの行列
Integer i; //入力番号
| |
備考1:状態空間表現は次のような式であらわされます.
上で用いている記号(x,y,A,B,C,D)と同じです.
.
x = Ax + Bu
y = Cx + Du
備考2:引数iについて.
多入力のシステムの場合,i番目の入力による伝達関数のみを返します.
| |
<プログラム例>
/*
2入力2出力システム
*/
Func void main()
{
RaMatrix G; //伝達関数行列
Matrix A,B,C,D; //状態空間表現の4つの行列
Integer i; //入力番号
A=[[-2,0][1,3]];
B=[[2,1][1,1]];
C=[[1,1][0,1]];
D=[[0,0][0,0]];
i=1;
G = ss2tfm(A,B,C,D);
print(G);
G = ss2tfm(A,B,C,D,i);
print(G);
}
| |
|
ss2zp
|
状態空間表現から極零の対への変換
|
<書式>
{z,p,k} = ss2zp(A,B,C,D)
{z,p,k} = ss2zp(A,B,C,D,i)
CoMatrix z,p; //零点,極
Matrix k; //ゲイン
Matrix A,B,C,D; //状態空間表現の4つの行列
Integer i; //入力番号
| |
備考1:状態空間表現は次のような式であらわされます.
上で用いている記号(x,y,A,B,C,D)と同じです.
.
x = Ax + Bu
y = Cx + Du
備考2:極pと零点z,ゲインkについて.
伝達関数を次のように表現しています.符号に注意しましょう.
(s-z1)(s-z2)...(s-zn)
G(s) = k -----------------------
(s-p1)(s-p2)...(s-pn)
備考3:引数iについて.
多入力のシステムの場合,i番目の入力による伝達関数のみを返します.
| |
<プログラム例>
/*
2入力2出力システム
*/
Func void main()
{
CoMatrix z,p; //零点,極
Matrix k; //ゲイン
Matrix A,B,C,D; //状態空間表現の4つの行列
A=[[-2,0][1,3]];
B=[[2,1][1,1]];
C=[[1,1][0,1]];
D=[[0,0][0,0]];
{z,p,k} = ss2zp(A,B,C,D);
print(z);
print(p);
print(k);
}
| |