[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
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