# HG changeset patch # User Jaroslav Hajek # Date 1276150839 -7200 # Node ID d97165928d052b65b0b0f0dab9f8ca28b23ce492 # Parent d95a6e491a6c94e2062c7066ec02fd881916aaca implement built-in vec() diff --git a/scripts/ChangeLog b/scripts/ChangeLog --- a/scripts/ChangeLog +++ b/scripts/ChangeLog @@ -1,3 +1,8 @@ +2010-06-10 Jaroslav Hajek + + * linear-algebra/vec.m: Remove (make built-in). + * linear-algebra/module.mk: Update. + 2010-06-09 Rik * general/flipdim.m, general/accumdim.m: Use > 1 test to find diff --git a/scripts/linear-algebra/module.mk b/scripts/linear-algebra/module.mk --- a/scripts/linear-algebra/module.mk +++ b/scripts/linear-algebra/module.mk @@ -24,7 +24,6 @@ linear-algebra/rref.m \ linear-algebra/subspace.m \ linear-algebra/trace.m \ - linear-algebra/vec.m \ linear-algebra/vech.m FCN_FILES += $(linear_algebra_FCN_FILES) diff --git a/scripts/linear-algebra/vec.m b/scripts/linear-algebra/vec.m deleted file mode 100644 --- a/scripts/linear-algebra/vec.m +++ /dev/null @@ -1,48 +0,0 @@ -## Copyright (C) 1995, 1996, 1999, 2000, 2002, 2004, 2005, 2006, 2007, 2008 -## Kurt Hornik -## -## This file is part of Octave. -## -## Octave is free software; you can redistribute it and/or modify it -## under the terms of the GNU General Public License as published by -## the Free Software Foundation; either version 3 of the License, or (at -## your option) any later version. -## -## Octave is distributed in the hope that it will be useful, but -## WITHOUT ANY WARRANTY; without even the implied warranty of -## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -## General Public License for more details. -## -## You should have received a copy of the GNU General Public License -## along with Octave; see the file COPYING. If not, see -## . - -## -*- texinfo -*- -## @deftypefn {Function File} {} vec (@var{x}) -## Return the vector obtained by stacking the columns of the matrix @var{x} -## one above the other. -## @end deftypefn - -## See Magnus and Neudecker (1988), Matrix differential calculus with -## applications in statistics and econometrics. - -## Author: KH -## Created: 8 May 1995 -## Adapted-By: jwe - -function v = vec (x) - - if (nargin != 1) - print_usage (); - endif - - v = x(:); - -endfunction - -%!assert(vec ([1, 2; 3, 4]) == [1; 3; 2; 4] && vec ([1, 3, 2, 4]) == [1; 3; 2; 4]); - -%!error vec (); - -%!error vec (1, 2); - diff --git a/src/ChangeLog b/src/ChangeLog --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,7 @@ +2010-06-10 Jaroslav Hajek + + * data.cc (Fvec): New DEFUN. + 2010-06-09 Jaroslav Hajek * data.cc (Freshape): Use octave_idx_type rather than int. diff --git a/src/data.cc b/src/data.cc --- a/src/data.cc +++ b/src/data.cc @@ -4433,6 +4433,39 @@ */ +DEFUN (vec, args, , + "-*- texinfo -*-\n\ +@deftypefn {Built-in Function} {} vec (@var{x})\n\ +Return the vector obtained by stacking the columns of the matrix @var{x}\n\ +one above the other. Equivalent to @code{@var{x}(:)}. Useful for functional\n\ +programming.\n\ +@end deftypefn") +{ + octave_value retval; + + if (args.length () == 1) + { + octave_value colon (octave_value::magic_colon_t); + octave_value arg = args(0); + retval = arg.single_subsref ("(", colon); + } + else + print_usage (); + + return retval; +} + +/* + +%!assert(vec ([1, 2; 3, 4]), [1; 3; 2; 4]) +%!assert(vec ([1, 3, 2, 4]) == [1; 3; 2; 4]); + +%!error vec (); + +%!error vec (1, 2); + +*/ + DEFUN (squeeze, args, , "-*- texinfo -*-\n\ @deftypefn {Built-in Function} {} squeeze (@var{x})\n\