Please note that the recommended version of Scilab is 2025.0.0. This page might be outdated.
See the recommended documentation of this function
bloc2ss
ブロック図を状態空間表現に変換
呼び出し手順
[sl]=bloc2ss(blocd)
引数
- blocd
リスト
- sl
リスト
説明
線形システムのブロック図表現を指定すると,
bloc2ss
はこの形式を状態空間線形システムに
変換します.
リスト blocd
の最初の要素は,
文字列 'blocd'
である必要があります.
このリストのその他の各要素はそれ自体,以下の型のリストとなります:
list('transfer','name_of_linear_system')
list('link','name_of_link', [number_of_upstream_box,upstream_box_port], [downstream_box_1,downstream_box_1_portnumber], [downstream_box_2,downstream_box_2_portnumber], ...)
文字列 'transfer'
および
'links'
はブロック図の中での要素の型を示す
キーワードです.
ケース1 :
リストの2番目のパラメータは,
状態空間表現(syslin
リスト)または伝達関数形式(有理数の行列)
で指定される
線形システムのScilab名を指す(またはそのように評価される)文字列
です.
各伝達関数ブロックには1つの整数値がふられます. 伝達関数ブロックの各入力および出力にも整数値の番号がふられます. (例を参照)
ケース2 :
ブロック図表現の2種類目の要素はリンクです.
リンクは,
対[number_of_upstream_box,upstream_box_port]
で
表されるブロックの出力と
他のブロックの入力を結合します.
この際,各入力は,対
[downstream_box_i,downstream_box_i_portnumber]
のように表されます.
ブロックの異なる要素を任意の順序で 定義できます.
例えば,
[1] ゲイン1のフィードバックを有するS1*S2
.
3つの伝達関数, S1
(番号
n_s1=2
) , S2
(番号
n_s2=3
) および伝達関す記号が['1','1']
となる加算器 (番号
n_add=4
) があります.
リンクは 4 つあります. 最初のリンク (名前は 'U'
)
入力 を加算器のポート1に結合します.
2番目と3番目のリンクはそれぞれ,
加算器の(出力)ポート1をシステムS1
の(入力)ポート1,
S1
の(出力)ポート1をS2
の(入力)ポート1
に結合します.
('Y'
という名前の)4番目のリンクは,
S2
の出力ポート1を出力
(仮想的なブロック -1 のポート0, 省略されている)
および加算器の(入力)ポート2に結合します.
例
//Initialization syst=list('blocd'); l=1; //Systems l=l+1;n_s1=l;syst(l)=list('transfer','S1'); //System 1 l=l+1;n_s2=l;syst(l)=list('transfer','S2'); //System 2 l=l+1;n_adder=l;syst(l)=list('transfer',['1','1']); //adder //Links // Inputs -1 --> input 1 l=l+1;syst(l)=list('link','U1',[-1],[n_adder,1]); // Internal l=l+1;syst(l)=list('link',' ',[n_adder,1],[n_s1,1]); l=l+1;syst(l)=list('link',' ',[n_s1,1],[n_s2,1]); // Outputs // -1 -> output 1 l=l+1;syst(l)=list('link','Y',[n_s2,1],[-1],[n_adder,2]);
s=poly(0,'s');S1=1/(s+1);S2=1/s;
を指定すると,
評価コールsl=bloc2ss(syst);
の結果は,
1/(s^2+s-1)
の状態空間表現となります.
[2] LFT の例
//Initialization syst=list('blocd'); l=1; //System (2x2 blocks plant) l=l+1;n_s=l;syst(l)=list('transfer',['P11','P12';'P21','P22']); //Controller l=l+1;n_k=l;syst(l)=list('transfer','k'); //Links l=l+1;syst(l)=list('link','w',[-1],[n_s,1]); l=l+1;syst(l)=list('link','z',[n_s,1],[-1]); l=l+1;syst(l)=list('link','u',[n_k,1],[n_s,2]); l=l+1;syst(l)=list('link','y',[n_s,2],[n_k,1]);
ただし,
参照
- poly — 多項式を定義する
Report an issue | ||
<< signalprocessing | signalprocessing | pen2ea >> |