extracting value from a vector

Rob Mahurin rob at utk.edu
Tue Apr 21 14:22:38 CDT 2009


On Apr 21, 2009, at 1:21 PM, John W. Eaton wrote:

> On 21-Apr-2009, Rob Mahurin wrote:
>
> | I want this often enough that I've written
> |
> | function varargout = columns_of (in)
> |    [d1,d2] = size(in);
> |    varargout = mat2cell(in, d1, ones(1,d2) );
> | endfunction
> |
> | so I can do e.g.
> |
> | octave> v = rand(2,3), [a,b] = columns_of(v)
> | v =
> |     0.054753   0.509675   0.866045
> |     0.702775   0.483820   0.816340
> | a =
> |     0.054753
> |     0.702775
> | b =
> |     0.50968
> |     0.48382
>
> See also num2cell, {:}, and deal:
>
>   v = rand (2, 3), [a, b, c] = deal (num2cell (v, 1){:})
>
> However, unlike your function, deal requires nargout == nargin.


Would it make sense to modify deal.m to allow this use in a less  
cryptic way?  Here's a (partial) patch that allows the above with
	[a,b] = deal(v,"columns")

Rob

-- 
Rob Mahurin
Department of Physics and Astronomy
University of Tennessee 		865 207 2594
Knoxville, TN 37996 			rob at utk.edu


--- /usr/local/share/octave/3.0.3/m/general/deal.m      2009-02-01  
17:23:24.000000000 -0500
+++ deal.m      2009-04-21 15:06:27.000000000 -0400
@@ -63,6 +63,11 @@

  function [varargout] = deal (varargin)

+  if (nargin == 2 && strcmp (varargin(2),"columns"))
+    varargout = num2cell (varargin{1}, 1);
+    return;
+  endif
+
    if (nargin == 0)
      print_usage ();
    elseif (nargin == 1 || nargin == nargout)




More information about the Help-octave mailing list