help-octave
[Top][All Lists]

Re: Arrays of structures

 From: PhilipNienhuis Subject: Re: Arrays of structures Date: Tue, 31 Dec 2019 10:35:15 -0600 (CST)

```Windhorn, Allen E [ACIM/LSA/MKT] wrote
> Supposing I have an array of structures X, where each element of the array
> has fields .th and .r.  I can refer to a particular field like "X(3).r" if
> I want to
> know its value, but is there a way to refer to ALL the r fields in the
> array as
> a group, like "X(:).r"?  This just gets me the value of the r field of the
> first
> element of the array for some reason:
>
>>> X(1).th = 23;
>>> X(1).r = 10.3;
>>> X(2).th = 17;
>>> X(2).r = 6.6;
>>> X(3).th = 47;
>>> X(3).r = 11.5;
>>> X(:).r  % (or X.r)
> ans =  10.300
> ans =  6.6000
> ans =  11.500
>>> % This shows me all the values, but...
>>> foo = X(:).r
> foo =  10.300  % Assignment only gets me the first one.  I expected:
>>> foo
> foo =
>
>    10.3000    6.6000   11.5000
>
> Using a loop is the obvious option, but I am just wondering if there is a
> better
> way, or a better construct.
>
> Thanks for any advice you can give me.

cellfun (@(x) x.th, <your function here>, "uni", 0)

Of course the UniformOutput value (here abbr. to "uni") depends on the
output of your function, see help cellfun.

Philip

--
Sent from: https://octave.1599824.n4.nabble.com/Octave-General-f1599825.html

```