# sysfact

システム分解

## 呼び出し手順

    [S,Series]=sysfact(Sys,Gain,flag)

## パラメータ

Sys

  行列 `[A,B,C,D]`を含む`syslin` リスト.

Gain

  実数行列

flag

  文字列 `'post'` または`'pre'`

S

  `syslin` リスト

Series

  `syslin` リスト

## 説明

`flag` が `'post'`に等しい場合, `sysfact` は,`S`に ABCD行列形式の線形システム `(A+B*Gain, B , Gain, I)` および直列システム `Sys*S` の最小実現である `Series` を返します.

`flag` が `'pre'`に等しい場合, `sysfact` は線形システム `(A+Gain*C, Gain , C, I)` および 直列システム `S*Sys` の最小実現である `Series`を返します.

## 例

    //カルマンフィルタ
    Sys=ssrand(3,2,4);Sys('D')=rand(3,2);
    S=sysfact(Sys,lqr(Sys),'post');
    ww=minss(Sys*S);
    ss2tf(gtild(ww)*ww),Sys('D')'*Sys('D')
    //カーネル
    Sys=ssrand(2,3,4);
    [X,d,F,U,k,Z]=abinv(Sys);
    ss2tf(Sys*Z)
    ss2tf(Sys*sysfact(Sys,F,'post')*U)

## 参照

- lqr
- lqe