~gabriel1984sibiu/octave/octave

« back to all changes in this revision

Viewing changes to scripts/signal/autoreg_matrix.m

  • Committer: Grevutiu Gabriel
  • Date: 2014-01-02 13:05:54 UTC
  • Revision ID: gabriel1984sibiu@gmail.com-20140102130554-3r7ivdjln1ni6kcg
New version (3.8.0) from upstream.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
## Copyright (C) 1995-2013 Kurt Hornik
 
2
##
 
3
## This file is part of Octave.
 
4
##
 
5
## Octave is free software; you can redistribute it and/or modify it
 
6
## under the terms of the GNU General Public License as published by
 
7
## the Free Software Foundation; either version 3 of the License, or (at
 
8
## your option) any later version.
 
9
##
 
10
## Octave is distributed in the hope that it will be useful, but
 
11
## WITHOUT ANY WARRANTY; without even the implied warranty of
 
12
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 
13
## General Public License for more details.
 
14
##
 
15
## You should have received a copy of the GNU General Public License
 
16
## along with Octave; see the file COPYING.  If not, see
 
17
## <http://www.gnu.org/licenses/>.
 
18
 
 
19
## -*- texinfo -*-
 
20
## @deftypefn {Function File} {} autoreg_matrix (@var{y}, @var{k})
 
21
## Given a time series (vector) @var{y}, return a matrix with ones in the
 
22
## first column and the first @var{k} lagged values of @var{y} in the
 
23
## other columns.  I.e., for @var{t} > @var{k}, @code{[1,
 
24
## @var{y}(@var{t}-1), @dots{}, @var{y}(@var{t}-@var{k})]} is the t-th row
 
25
## of the result.  The resulting matrix may be used as a regressor matrix
 
26
## in autoregressions.
 
27
## @end deftypefn
 
28
 
 
29
## Author: KH <Kurt.Hornik@wu-wien.ac.at>
 
30
## Description: Design matrix for autoregressions
 
31
 
 
32
function X = autoreg_matrix (y, k)
 
33
 
 
34
  if (nargin != 2)
 
35
    print_usage ();
 
36
  endif
 
37
 
 
38
  if (! (isvector (y)))
 
39
    error ("autoreg_matrix: Y must be a vector");
 
40
  endif
 
41
 
 
42
  T = length (y);
 
43
  y = reshape (y, T, 1);
 
44
  X = ones (T, k+1);
 
45
  for j = 1 : k;
 
46
    X(:, j+1) = [(zeros (j, 1)); y(1:T-j)];
 
47
  endfor
 
48
 
 
49
endfunction
 
50
 
 
51
 
 
52
%!test
 
53
%! K = 4;
 
54
%! A = zeros (1,K+1);
 
55
%! A(1) = 1;
 
56
%! B = eye (K+1);
 
57
%! B(:,1) = 1;
 
58
%! assert (autoreg_matrix (A,K), B);
 
59
 
 
60
%!error autoreg_matrix ()
 
61
%!error autoreg_matrix (1)
 
62
%!error autoreg_matrix (ones (4,1), 5)
 
63