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


findABCD

離散時間システムの部分空間の同定

呼出し手順

[SYS,K] = findABCD(S,N,L,R,METH,NSMPL,TOL,PRINTW)
SYS = findABCD(S,N,L,R,METH)
[SYS,K,Q,Ry,S,RCND] = findABCD(S,N,L,R,METH,NSMPL,TOL,PRINTW)
[SYS,RCND] = findABCD(S,N,L,R,METH)

パラメータ

S

整数,ブロックハンケル行列のブロック行の数

N

整数, システム次数

L

整数, 出力の数

R

行列, findrをコールすることにより計算される結合されたブロックハンケル行列 のR因子に関連.

METH

整数, 使用方法に関するオプション

= 1

過去の入出力を用いるMOESP法;

= 2

N4SID 法;

= 3

複合法: A と C は MOESP, B と D は N4SIDによる.

デフォルト: METH = 3.

NSMPL

整数, 共分散およびカルマン予測ゲインを計算するために使用されるサンプルの総数. 共分散およびカルマン予測ゲインを必要としない場合,このパラメータは不要です. NSMPL = 0の場合, K, Q, Ry, および S は計算されません. デフォルト: NSMPL = 0.

TOL

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

PRINTW

整数, 警告メッセージを印字するためのスイッチ.

PRINTW

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

PRINTW

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

デフォルト: PRINTW = 0.

SYS

状態空間実現 SYS = (A,B,C,D) (syslin オブジェクト)を計算します

K

カルマン推定器ゲイン K (NSMPL > 0の場合)

Q

状態共分散

Ry

出力共分散

S

状態出力相互共分散

RCND

ランク決定, 最小二乗またはリカッチ方程式の解に関わる行列の条件数の 逆数のベクトル

説明

システム行列および離散時間システムのカルマンゲインを見つけます. この際,システム次元および 部分空間同定技術(MOESPまたはN4SID)を用いて 結合されたブロックハンケル行列のR因子の要部を指定します.

  • [SYS,K] = findABCD(S,N,L,R,METH,NSMPL,TOL,PRINTW) は,状態空間実現 SYS = (A,B,C,D) (ssオブジェクト) およびカルマン予測子ゲイン K (NSMPL > 0の場合) を計算します. モデルの構造は次のようになります:

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

    ただし,x(k) および y(k)はそれぞれ長さNおよびLのベクトルです.

  • [SYS,K,Q,Ry,S,RCND] = findABCD(S,N,L,R,METH,NSMPL,TOL,PRINTW) は, 状態量, 出力および(カルマンゲイン計算に使用される)状態出力 (相互)共分散行列 Q, Ry, S を ランク決定,最小二乗またはリカッチ方程式の解に使用される行列の条件数の逆数を含む 長さ lr のベクトル RCND と共に返します. ただし,

lr = 4  ( K ),
lr = 12 ( K ).

行列RはfindRにより計算され,適当な 引数 METH および JOBDにより定義されます. findABCD で METH = 1 を指定した場合, findR で METH = 1 かつ JOBD = 1, findABCD で METH = 3 を指定した場合, findR で METH = 1 を使用する必要があります.

// 指定した線形システムからデータを生成
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;
[R,N1,SVAL] = findR(S,Y',U');
N=3;
SYS1 = findABCD(S,N,1,R) ;SYS1.dt=0.1;
SYS1.X0 = inistate(SYS1,Y',U');
Y1=flts(U,SYS1);
clf();plot2d((1:nsmp)',[Y',Y1'])

参照

  • findAC — 離散時間システム部分空間の同定
  • findBD — 状態量初期値および離散時間システムのシステム行列BとD
  • findBDK — カルマンゲインおよび離散時間システムの B, D システム行列
  • findR — 線形時不変システムの行列を指定する際のプリプロセッサ
  • sorder — 離散時間システムの次数を計算
  • sident — 離散時間状態空間実現およびカルマンゲイン
Report an issue
<< armax1 Identification findAC >>

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 Jun 17 17:54:17 CEST 2024