% Exercise 2: AR models

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Ndata　と　M　の値を変えて試して見よ
% 学習データ数
Ndata = 50;
% AR 次数
M = 5;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  
 % 学習すべきデータ x の生成
 %  x は 長さ2Nの時系列で、2N次元の縦ベクトル。
 %  randn()は、正規ノイズを成分とする行列を出力する関数。
 N = Ndata;
 t = (1:N*2)'/100;
 x = sin(t*4*pi) ...
    + sin(t*4.1*pi) ...
    + randn(N*2,1)*0.1;
 % Lorenz attractor のデータを使うならば、
 % 下の行の'%'をはずすべし。
   %load lorenz

 % パラメータベクトル推定
 %  ここでx(1:N)はxベクトルの前半分。
 a = AR_estimate( x(1:N), M );

 % パラメータベクトルと x の前半分に基づいて、
 %  x の後ろ半分をマルチステップ予測
 xp = AR_predict( x(1:N), a, N );
 
 % 結果のプロット
 plot( x,'.' );
 hold on
 plot( N+1:N*2, xp, 'r' )
 hold off
 title( ['AR sample  degree=' num2str(M)] )
