help-octave
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: varargout{:} = func() ?


From: Jaroslav Hajek
Subject: Re: varargout{:} = func() ?
Date: Wed, 24 Feb 2010 06:03:37 +0100

On Wed, Feb 24, 2010 at 3:03 AM, Ben Abbott <address@hidden> wrote:
> On Feb 23, 2010, at 8:11 PM, John W. Eaton wrote:
>
>> On 23-Feb-2010, Ben Abbott wrote:
>>
>> | On Feb 23, 2010, at 7:43 PM, WS wrote:
>> |
>> | > Has this notation been implemented in octave yet?
>> | >
>> | > Tx
>> |
>> | hmmm ... if you mean something like what is below, then yes.
>> |
>> | function varargout = foobar ( )
>> |   for n = 1:numel(nargout)
>> |     varargout{n} = n;
>> |   end
>> | end
>> |
>> | In this instance "varargout" has a special meaning.
>> |
>> | If you mean, something like what is below, then that doesn't work with 
>> 3.2.x, but does with Matlab.
>> |
>> |     v{:} = {rand(1,2), rand(1,3)}
>> |     error: invalid dimension inquiry of a non-existent value
>> |
>> | or
>> |
>> |     v{:} = rand(1,2)
>> |     error: invalid dimension inquiry of a non-existent value
>> |
>> | Jarsolav, is this something that should be added to Octave?
>>
>> You need to write
>>
>>  v = cell (expected_nargout, 1);
>>
>>  [v{:}] = func (...);
>>
>> Does
>>
>>  v = cell (expected_nargout, 1);
>>  v{:} = func (...);
>>
>> work in Matlab?  If so, I think that's a relatively new addition and
>> in my opinion doesn't really fit with the rest of the language.
>
>>> v = cell (3, 1)
> v =
>     []
>     []
>     []
>
>>> v{:} = rand(1,2)
> v =    [1x2 double]
>
> My impression is that this isn't very new, but as I've always found some of 
> how Matlab handles cells to be counter intuitive (if not misleading), so I'm 
> not in the habit of using this notation.
>
> Ben
>
>

I'd even say this is a bug in Matlab. The LHS expression is obviously
a cs-list with 3 elements, and it is outside multiple assignment, so
it should give an error, like in Octave. This should only work if v is
1-by-1 (it does in Octave). What version of Matlab did you try?


-- 
RNDr. Jaroslav Hajek, PhD
computing expert & GNU Octave developer
Aeronautical Research and Test Institute (VZLU)
Prague, Czech Republic
url: www.highegg.matfyz.cz



reply via email to

[Prev in Thread] Current Thread [Next in Thread]