armax1 armax 同定

## 呼び出し手順

    [arc,resid]=armax1(r,s,q,y,u [,b0f])

## 引数

y

  出力信号

u

  入力信号

r,s,q

  自己回帰の次数, ただし, r >=0, s >=-1.

b0f

  オプションのパラメータ. デフォルト値は 0で,この場合, 係数 b0 を同定する必要があります. bof=1の場合, b0 は0であると仮定され,同定されません.

arc

  "ar"型のtlistおよびフィールド a, b, d, ny, nu, sig

  a

    ベクトル `[1,a1,...,a_r]`

  b

    ベクトル `[b0,......,b_s]`

  d

    ベクトル `[1,d1,....,d_q]`

  sig

    resid=[ sig*echap(1),....,];

## 説明

armax1 は1次元のARXプロセスの係数を同定するために使用されます:

    A(z^-1)y= B(z^-1)u + D(z^-1)sig*e(t)
    e(t) is a 1-dimensional white noise with variance 1.
    A(z)= 1+a1*z+...+a_r*z^r; ( r=0 => A(z)=1)
    B(z)= b0+b1*z+...+b_s z^s ( s=-1 => B(z)=0)
    D(z)= 1+d1*z+...+d_q*z^q  ( q=0 => D(z)=1)

この手法については,Eykhoffの96ページ, "trends and progress in system identification"を参照ください.

    z(t)=[y(t-1),..,y(t-r),u(t),...,
          u(t-s),e(t-1),...,e(t-q)]

および

    coef= [-a1,..,-ar,b0,...,b_s,d1,...,d_q]'
    y(t)= coef'* z(t) + sig*e(t).

とすると, 逐次型のAR推定(RLLS)が使用されます. この際, e(t-i)は推定値により置換されます. q=0の場合,この手法は逐次型のarmaxに完全に一致します.

## 例

    a = [1, -2.851, 2.717, -0.865];
    b = [0, 1, 1, 1];
    d = [1, 0.7, 0.2];
    ar = armac(a, b, d, 1, 1, 1);
    disp(_("Simulation of an ARMAX process:"));
    disp(ar);
    n = 300;
    u = -prbs_a(n, 1, int([2.5,5,10,17.5,20,22,27,35]*100/12));
    zd = narsimul(ar, u);
    // armax1を使用: 有色ノイズ同定
    // 同じ例を以下のように試すことができます
    [arc1, resid] = armax1(3,3,2,zd(1:n),u,1);
    disp(arc1);

## 重要な警告

バージョン4.1.2までのScilabは, `sig`の2乗を戻り値 `arc.sig`として返していました. armaモデルの表示とarmax関数について 確認し易くするために, Scilabバージョン5.0以降では, 戻り値`arc.sig`は`sig`となっています.