# arma

Scilab armaライブラリ

## 説明

Armax は,Scilab tlist型`'ar'`を有するデータを処理します. `armac`が, `Armax` Scilabオブジェクトを構築する際に使用されます. `'ar'` tlist には,フィールド `['a','b','d','ny','nu','sig']`が含まれます.

armac

  この間巣は,Armaxプロセス`A(z^-1)y= B(z^-1)u + D(z^-1)sig*e(t)` を符号化するScilab tlistを作成します.

      -->ar=armac([1,2],[3,4],1,1,1,sig);

      -->ar('a')
       ans  =

      !   1.    2. !
      -->ar('sig')
       ans  =

          1.

armap(ar [,out])

  `ar`に関するarmax方程式を表示します.

armap_p(ar [,out])

  `ar` に関するarmax方程式を多項式行列表示で表示します.

[A,B,D]=armap2p(ar)

  ar表現から多項式行列を展開します.

armax

  n次元ARXプロセス`A(z^-1)y= B(z^-1)u + sig*e(t)`の係数を 同定するために使用されます.

armax1

  armax1 は,1次元 ARX プロセス`A(z^-1)y= B(z^-1)u + D(z^-1)sig*e(t)` の係数を同定するために使用されます.

arsimul

  armax 軌道シミュレーション.

narsimul

  armax シミュレーション (rtitrを使用)

odedi

  ode および arsimulの簡単なテスト. ODEの 'discret' オプションを試します.

prbs_a

  擬似乱数バイナリ列を生成

reglin

  線形回帰

## 例

    // Example extracted from the demo arma3.dem.sce in the cacsd module
    // Spectral power estimation
    // ( form Sawaragi et all)
    m = 18;
    a = [1,-1.3136,1.4401,-1.0919,+0.83527];
    b = [0.0,0.13137,0.023543,0.10775,0.03516];
    u = rand(1,1000,'n');
    z = arsimul(a,b,[0],0,u);

    //----Using macro mese
    [sm,fr]=mese(z,m);

    //----The theorical result

    function gx=gxx(z,a,b)
      w  = exp(-%i*2*%pi*z*(0:4))'
      gx = abs(b*w)^2/(abs(a*w)^2);
    endfunction

    res=[];
    for x=fr
      res=[ res, gxx(x,a,b)];
    end

    //----using armax estimation of order  (4,4)
    // it's a bit tricky because we are not supposed to know the order

    [arc,la,lb,sig,resid]=armax(4,4,z,u);
    res1=[];
    for x=fr
      res1=[ res1, gxx(x,la(1),lb(1))];
    end

    //-- visualization of the results
    plot2d([fr;fr;fr]',[20*log10(sm/sm(1));20*log10(res/res(1));20*log10(res1/res1(1))]',[2,1,-1])
    legend(["Using macro mese";"Theoretical value";"Arma identification"])
    xtitle("Spectral power","frequency","spectral estimate")