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


findBDK

カルマンゲインおよび離散時間システムの B, D システム行列

呼び出し手順

[B,D,K] = findBDK(S,N,L,R,A,C,METH,JOB,NSMPL,TOL,PRINTW)
[B,D,RCND] = findBDK(S,N,L,R,A,C,METH,JOB)
[B,D,K,Q,Ry,S,RCND] = findBDK(S,N,L,R,A,C,METH,JOB,NSMPL,TOL,PRINTW)

パラメータs

S

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

N

整数

L

整数

R

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

A

正方行列

C

行列

METH

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

= 1

過去の入力と出力を指定するMOESP法;

= 2

N4SID 法;

デフォルト: METH = 2.

JOB

計算するシステム行列の種類を指定するオプション:

= 1

B行列を計算;

= 2

BおよびD行列を計算.

デフォルト: JOB = 2.

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

長さ12のベクトルで, ランク決定, 最小二乗またはリカッチ方程式の解に関わる行列の条件数の逆数が含まれます.

説明

システムの次数,行列AおよびCおよび関連する 結合ブロックハンケル行列のR因子を指定すると, 部分空間同定法 (MOESP または N4SID) により, 離散時間システムのシステム行列BおよびDとカルマンゲインを返します.

  • [B,D,K] = findBDK(S,N,L,R,A,C,METH,JOB,NSMPL,TOL,PRINTW) は, システム行列 B (JOB = 1の場合), システム行列 BおよびD (JOB = 2の場合), カルマン予測ゲイン 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のベクトルです.

  • [B,D,RCND] = findBDK(S,N,L,R,A,C,METH,JOB) は, 長さ 4 のベクトル RCND も返します. このベクトルには,ランク決定に関連する条件数の逆数が含まれます.

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

findR により計算される行列 Rは, 適当な引数 METH および JOBDで定義されます. findR ではMETH = 1かつJOBD = 1,findBDKではMETH = 1を使用しますす. FINDR では METH = 1, findBDK では METH = 2 を使用することができます.

出力引数の数は変換しますが,次のように入力引数に対応します,

B = findBDK(S,N,L,R,A,C,METH,1)  
[B,D] = findBDK(S,N,L,R,A,C,METH,2)  
[B,D,RCND] = findBDK(S,N,L,R,A,C,METH,2)

//指定した線形システムからデータを生成
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);
[B,D,K] = findBDK(S,N,L,R,A,C);
SYS1=syslin(1,A,B,C,D);
SYS1.X0 = inistate(SYS1,Y',U');
Y1=flts(U,SYS1);
clf();plot2d((1:nsmp)',[Y',Y1'])

参照

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

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