help-octave
[Top][All Lists]
Advanced

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

Re: why two indexes in 1d cell array ? (octave-3.4.2) ... how about more


From: Ben Abbott
Subject: Re: why two indexes in 1d cell array ? (octave-3.4.2) ... how about more dimensions ?
Date: Wed, 10 Aug 2011 19:06:36 -0400

On Aug 10, 2011, at 6:22 PM, Ben Abbott wrote:

> On Aug 10, 2011, at 5:33 PM, Sergei Steshenko wrote:
> 
>> --- On Wed, 8/10/11, Ben Abbott <address@hidden> wrote:
>> 
>>> From: Ben Abbott <address@hidden>
>>> Subject: Re: why two indexes in 1d cell array ? (octave-3.4.2) ... how 
>>> about more dimensions ?
>>> To: "Sergei Steshenko" <address@hidden>
>>> Cc: address@hidden
>>> Date: Wednesday, August 10, 2011, 2:06 PM
>>> On Aug 10, 2011, at 3:18 PM, Sergei
>>> Steshenko wrote:
>>> 
>>>> c =
>>>> {
>>>>  [1,1] = a string
>>>>  [1,2] =
>>>> "
>>>> 
>>>> I see _two_ indexes, i.e. "[1,1]...", "[1,2]", though
>>> to me it looks like
>>>> created a _1d_ (just _one_ dimension) cell array;
>>> 
>>> Matlab originated from Fortran code. Thus, arrays were/are
>>> column-major.
>>> 
>>>    http://en.wikipedia.org/wiki/Row-major_order#Column-major_order
>>> 
>>> When the source code switched to C, Matlab maintained the
>>> default column-major storage order for arrays. This means
>>> that A = 1:5 produces a single row with 5 columns.
>>> 
>>> However, since C is row-major ...
>>> 
>>>    http://en.wikipedia.org/wiki/Row-major_order#Row-major_order
>>> 
>>> ... a 1D array requires two indices. The fist specifies the
>>> row [1], and the second the column.
>>> 
>>> For compatibility with Matlab, Octave adopted the same
>>> approach.
>>> 
>>>> Is this all expected and documented behavior ?
>>> 
>>> Yes this is expected and deliberate. If you search the
>>> manual. you'll find a few instances where the effect of
>>> "column-major" ordering is mentioned.
>>> 
>>> Ben
>> 
>> Let's again have a look at documentation:
>> 
>> http://www.gnu.org/software/octave/doc/interpreter/Basic-Usage-of-Cell-Arrays.html#Basic-Usage-of-Cell-Arrays
>> .
>> 
>> I am going to repeat actions described in the documentation:
>> 
>> 1a) documentation:
>> c = {"a string", rand(2, 2)};
>> 
>> 1b) me:
>> "
>> c = {"a string", rand(2, 2)}
>> c =
>> {
>> [1,1] = a string
>> [1,2] =
>> 
>>    0.64730   0.79055
>>    0.40904   0.54691
>> 
>> }
>> "
>> - 'octave' prints differently, but I didn't put ';' at the end of my input,
>> so IMO in this case 'octave' behaves as expected;
>> 
>> 
>> 2a) documentation:
>> "
>> c{1:2}
>>         ⇒ ans =
>> 
>>              (,
>>                [1] = a string
>>                [2] =
>> 
>>                   0.593993   0.627732
>>                   0.377037   0.033643
>> 
>>              ,)
>> "
>> 2b) me:
>> "
>> c{1:2}
>> ans = a string
>> ans =
>> 
>>  0.64730   0.79055
>>  0.40904   0.54691
>> ".
>> 
>> In '2b)' _no_ indexes.
>> 
>> Why the discrepancy between actual behavior and the documentation ?
>> 
>> Thanks,
>> Sergei.
> 
> You've found an error in the documentation.
> 
> If someone doesn't get to is before me, I'll submit a fix for it later today.
> 
> Ben

Done.

        http://hg.savannah.gnu.org/hgweb/octave/rev/1acb639204d0

Ben




reply via email to

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