[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: struct weirdness
From: |
Ben Abbott |
Subject: |
Re: struct weirdness |
Date: |
Fri, 24 Aug 2012 07:31:06 -0400 |
On Aug 24, 2012, at 5:23 AM, Sergei Steshenko wrote:
> --- On Thu, 8/23/12, John W. Eaton <address@hidden> wrote:
>
>> From: John W. Eaton <address@hidden>
>> Subject: Re: struct weirdness
>> To: "Sergei Steshenko" <address@hidden>
>> Cc: "Przemek Klosowski" <address@hidden>, "Jordi Gutiérrez Hermoso"
>> <address@hidden>, "address@hidden" <address@hidden>
>> Date: Thursday, August 23, 2012, 3:22 PM
>> On 23-Aug-2012, Sergei Steshenko
>> wrote:
>>
>> | "This the square brackets should be curly" - if it's a
>> must, and square brackets are accepted, then we have a bug -
>> because no error message is issued.
>> |
>> | If square brackets are allowed, then the struct element
>> should be treated as vector in this case, which it is not -
>> see my earlier Email in the thread. So, I think, we still
>> have a bug - because square brackets are not treated as they
>> normally do.
>>
>> It's not a bug.
>>
>> The behavior is compatible with Matlab.
>>
>> The [...] argument is a single Matrix object, which is a
>> single
>> "scalar" element of a cell array. So somewhat
>> consistent with
>> handling of scalar objects in other contexts, it is
>> broadcast to all
>> dimensions of the struct array.
>>
>> jwe
>>
>
> Which part of "help struct" explains that I can't apply 'size' operator to
> something that has been specified with '[...]' ?
>
> Thanks,
> Sergei.
I think you're misunderstanding how structures work. Consider "samples.age" ...
samples.age
ans =
45 52 45 23
ans =
45 52 45 23
ans =
45 52 45 23
ans =
45 52 45 23
The four "ans" are due to the samples structure having size 1x4, and is the
same as the comma separated list (cs-list) below.
samples(1).age, samples(2).age, samples(3).age, samples(4).age
By placing cs-list between square brackets, the entire list is collected into a
single variable.
age = [samples.age]
age =
45 52 45 23 45 52 45 23 45 52 45 23 45 52 45 23
size (age)
ans =
1 16
Applying size() to [samples.age] give the expected result.
size ([samples.age])
ans =
1 16
Entering size(samples.age) is equivalent to ...
size (samples(1).age, samples(2).age, samples(3).age, samples(4).age)
Which isn't compatible with the syntax for the size() function.
Ben
- struct weirdness, Przemek Klosowski, 2012/08/23
- Re: struct weirdness, Sergei Steshenko, 2012/08/23
- Re: struct weirdness, Jordi Gutiérrez Hermoso, 2012/08/23
- Re: struct weirdness, Jordi Gutiérrez Hermoso, 2012/08/23
- Re: struct weirdness, John W. Eaton, 2012/08/23
- Re: struct weirdness, Sergei Steshenko, 2012/08/24
- Re: struct weirdness,
Ben Abbott <=
- Re: struct weirdness, Sergei Steshenko, 2012/08/24
- Re: struct weirdness, Jordi Gutiérrez Hermoso, 2012/08/24
- Re: struct weirdness, Sergei Steshenko, 2012/08/25
- Re: struct weirdness, Jordi Gutiérrez Hermoso, 2012/08/25
- Re: struct weirdness, Sergei Steshenko, 2012/08/25
- Re: struct weirdness, Jordi Gutiérrez Hermoso, 2012/08/26
- Re: struct weirdness, Robert T. Short, 2012/08/26
- Re: struct weirdness, Jordi Gutiérrez Hermoso, 2012/08/26
- Re: struct weirdness, Jordi Gutiérrez Hermoso, 2012/08/26
- Re: struct weirdness, Robert T. Short, 2012/08/26