how to get struct array field as a vector?

91 views (last 30 days)
I have a struct array, and a field like data.age and I want to get the ages as a vector v for which I can write for example : v(v>18), because data.age(data.age>18) gives me an error message.

Accepted Answer

Thorsten
Thorsten on 12 Oct 2015
age = [data.age];
agegt18 = age(age>18);

More Answers (2)

Walter Roberson
Walter Roberson on 12 Oct 2015
v = [data.age];
data(v>18)
Or more compactly,
data([data.age]>18)
  2 Comments
Mr M.
Mr M. on 12 Oct 2015
Thanks, and what if the filed contains strings, and I want to select elements for which string equals to a given string? Something like this: data({data.gender}=='male')
Thorsten
Thorsten on 12 Oct 2015
Edited: Thorsten on 12 Oct 2015
Use
data(strcmp({data.gender}, 'male'))

Sign in to comment.


Tin Aye Chit Chit
Tin Aye Chit Chit on 15 May 2019
Please check the code, that code can't give me the answer I want.
for i = 1:1:n
V=index{i};
for j = 1:1:size(V,2)
S{i,j}.e = nodeArch.node(V(1,j)).energy;
S{i,j}.t = nodeArch.node(V(1,j)).type;
S{i,j}.g = nodeArch.node(V(1,j)).G;
end
end
The S have more column than V. What is wrong in that code?

Categories

Find more on Structures in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!