changeset 10694:d97165928d05

implement built-in vec()
author Jaroslav Hajek <highegg@gmail.com>
date Thu, 10 Jun 2010 08:20:39 +0200
parents d95a6e491a6c
children 701b969db6a3
files scripts/ChangeLog scripts/linear-algebra/module.mk scripts/linear-algebra/vec.m src/ChangeLog src/data.cc
diffstat 5 files changed, 42 insertions(+), 49 deletions(-) [+]
line wrap: on
line diff
--- a/scripts/ChangeLog	Wed Jun 09 21:44:21 2010 +0200
+++ b/scripts/ChangeLog	Thu Jun 10 08:20:39 2010 +0200
@@ -1,3 +1,8 @@
+2010-06-10  Jaroslav Hajek  <highegg@gmail.com>
+
+	* linear-algebra/vec.m: Remove (make built-in).
+	* linear-algebra/module.mk: Update.
+
 2010-06-09  Rik <octave@nomad.inbox5.com>
 
         * general/flipdim.m, general/accumdim.m: Use > 1 test to find
--- a/scripts/linear-algebra/module.mk	Wed Jun 09 21:44:21 2010 +0200
+++ b/scripts/linear-algebra/module.mk	Thu Jun 10 08:20:39 2010 +0200
@@ -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)
--- a/scripts/linear-algebra/vec.m	Wed Jun 09 21:44:21 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -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
-## <http://www.gnu.org/licenses/>.
-
-## -*- 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 <Kurt.Hornik@wu-wien.ac.at>
-## 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);
-
--- a/src/ChangeLog	Wed Jun 09 21:44:21 2010 +0200
+++ b/src/ChangeLog	Thu Jun 10 08:20:39 2010 +0200
@@ -1,3 +1,7 @@
+2010-06-10  Jaroslav Hajek  <highegg@gmail.com>
+
+	* data.cc (Fvec): New DEFUN.
+
 2010-06-09  Jaroslav Hajek  <highegg@gmail.com>
 
 	* data.cc (Freshape): Use octave_idx_type rather than int.
--- a/src/data.cc	Wed Jun 09 21:44:21 2010 +0200
+++ b/src/data.cc	Thu Jun 10 08:20:39 2010 +0200
@@ -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\