Scilab Website | Contribute with GitLab | Mailing list archives | ATOMS toolboxes
Scilab Online Help
6.0.1 - 日本語

Change language to:
English - Français - Português - Русский

Please note that the recommended version of Scilab is 2025.0.0. This page might be outdated.
See the recommended documentation of this function

Scilabヘルプ >> Elementary Functions > signalprocessing > bloc2ss

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

ただし,

A=[0,1;0,0];
B=[1;1];
C=[1,1];
D=poly(0,'s');
P=syslin('c',A,B,C,D);

参照

  • poly — 多項式を定義する
Report an issue
<< signalprocessing signalprocessing pen2ea >>

Copyright (c) 2022-2024 (Dassault Systèmes)
Copyright (c) 2017-2022 (ESI Group)
Copyright (c) 2011-2017 (Scilab Enterprises)
Copyright (c) 1989-2012 (INRIA)
Copyright (c) 1989-2007 (ENPC)
with contributors
Last updated:
Mon Feb 12 23:12:40 CET 2018