how to get struct array field as a vector?

25 vues (au cours des 30 derniers jours)
Mr M.
Mr M. le 12 Oct 2015
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.
  1 commentaire
Stephen23
Stephen23 le 12 Oct 2015
Modifié(e) : Stephen23 le 12 Oct 2015
Accessing fields of non-scalar structures is covered quite well in the documentation:
It is also useful to understand comma separated lists:

Connectez-vous pour commenter.

Réponse acceptée

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

Plus de réponses (2)

Walter Roberson
Walter Roberson le 12 Oct 2015
v = [data.age];
data(v>18)
Or more compactly,
data([data.age]>18)
  2 commentaires
Mr M.
Mr M. le 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 le 12 Oct 2015
Modifié(e) : Thorsten le 12 Oct 2015
Use
data(strcmp({data.gender}, 'male'))

Connectez-vous pour commenter.


Tin Aye Chit Chit
Tin Aye Chit Chit le 15 Mai 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?

Catégories

En savoir plus sur Structures dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by