Scilab Home page | Wiki | Bug tracker | Forge | Mailing list archives | ATOMS | File exchange
Please login or create an account
Change language to: English - Français - Português -

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

Scilab help >> CACSD > findx0BD

findx0BD

状態量,離散時間システムのBおよびD行列を推定

呼び出し手順

[X0,B,D] = findx0BD(A,C,Y,U,WITHX0,WITHD,TOL,PRINTW)
[x0,B,D,V,rcnd] = findx0BD(A,C,Y,U)

パラメータ

A

システムの状態行列

C

システムのC行列

Y

システム出力

U

システム入力

WITHX0

状態量の初期値 x0 の推定に関するスイッチ.

=

1: x0を推定します;

=

0: x0を推定しません.

デフォルト: WITHX0 = 1.

WITHD

行列 Dの推定に関するスイッチ.

=

1: 行列Dを推定します;

=

0: 行列Dを推定しません.

デフォルト: WITHD = 1.

TOL

行列のランクを推定する際の許容誤差.TOL > 0 の場合,TOLに指定した値が 条件数の逆数の下界として使用されます. デフォルト: prod(size(matrix))*epsilon_machine ただし, epsilon_machine は相対機械精度です.

PRINTW

警告メッセージの出力に関するスイッチ.

=

1: 警告メッセージを出力;

=

0: 警告メッセージを出力しない.

デフォルト: PRINTW = 0.

X0

推定された線形システムの状態量の初期値.

B

推定された線形システムのB行列.

D

推定された線形システムのD行列.

V

状態行列Aを実数Schur形式に縮減する直交行列

rcnd

ランク決定に関連する行列の条件数の逆数を推定します.

説明

findx0BD は, (推定された)システム行列 A, C および入出力データを指定し, 状態量の初期値と離散時間システムのBおよびD行列を推定します.

[X0,B,D] = findx0BD(A,C,Y,U,WITHX0,WITHD,TOL,PRINTW) は, システム行列 A, C 出力データ Yおよび入力データ U を用いて, 状態量初期値 X0 および離散時間システムの行列 B および D を推定します. モデルの構造は以下のようになります :

x(k+1) = Ax(k) + Bu(k),   k >= 1,
y(k)   = Cx(k) + Du(k),

ベクトル y(k) および u(k) それぞれ Y および U のk行目の転置です.

[x0,B,D,V,rcnd] = findx0BD(A,C,Y,U) は,システム状態行列 A を実数 Schur 形式に縮減する 直交行列 V も返します. 同時にランク決定に関連する行列の条件数の逆数の推定値も返します.

B = findx0BD(A,C,Y,U,0,0)    B ,
[B,D] = findx0BD(A,C,Y,U,0)     B  D .

//指定した線形システムからデータを生成
A = [ 0.5, 0.1,-0.1, 0.2;
      0.1, 0,  -0.1,-0.1;      
     -0.4,-0.6,-0.7,-0.1;  
      0.8, 0,  -0.6,-0.6];      
B = [0.8;0.1;1;-1];
C = [1 2 -1 0];
SYS=syslin(0.1,A,B,C);
nsmp=100;
U=prbs_a(nsmp,nsmp/5);
Y=(flts(U,SYS)+0.3*rand(1,nsmp,'normal'));

// Rを計算
S=15;L=1;
[R,N,SVAL] = findR(S,Y',U');

N=3;
METH=3;TOL=-1;
[A,C] = findAC(S,N,L,R,METH,TOL);

[X0,B,D,V,rcnd] = findx0BD(A,C,Y',U');
SYS1=syslin(1,A,B,C,D,X0);

Y1=flts(U,SYS1);
clf();plot2d((1:nsmp)',[Y',Y1'])

参照

  • findBD — 状態量初期値および離散時間システムのシステム行列BとD
  • inistate — 離散時間システムの状態量初期値を推定
Scilab Enterprises
Copyright (c) 2011-2017 (Scilab Enterprises)
Copyright (c) 1989-2012 (INRIA)
Copyright (c) 1989-2007 (ENPC)
with contributors
Last updated:
Thu Mar 03 11:00:53 CET 2011