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

## 呼び出し手順

    [A,C] = findAC(S,N,L,R,METH,TOL,PRINTW)
                [A,C,RCND] = findAC(S,N,L,R,METH,TOL,PRINTW)

## パラメータ

S

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

N

  整数

L

  整数

R

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

METH

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

  = 1

    過去の入力/出力に基づく MOESP 法;

  = 2

    N4SID 法;

  デフォルト: METH = 3.

TOL

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

PRINTW

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

  PRINTW

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

  = 0

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

  デフォルト: PRINTW = 0.

A

  行列, 状態システム行列

C

  行列, 出力システム行列

RCND

  長さ4のベクトル, ランク決定に使用される行列の条件数

## 説明

部分空間同定法(MOESP または N4SID)を使用して, 離散時間システムのシステム行列 A および C を見つけます. この際, システム次元および結合されたブロックハンケル行列のR因子の関連する部分を 指定します.

- [A,C] = findAC(S,N,L,R,METH,TOL,PRINTW) は, システム行列 A および C を計算します. モデル構造は次のようになります: 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 のベクトルです.

- [A,C,RCND] = findAC(S,N,L,R,METH,TOL,PRINTW) は長さ4のベクトルRCNDも返します. この中には,ランク決定に使用される行列の条件数が含まれます.

行列 R は, findR により計算され, 適当な引数 METH および JOBD で定義 する必要があります.

## 例

    //指定した線形システムからデータを生成
    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);

## 参照

- findABCD
- findBD
- findBDK
- findR
- sorder
- sident