how to get struct array field as a vector?

조회 수: 27 (최근 30일)
Mr M.
Mr M. 2015년 10월 12일
답변: Tin Aye Chit Chit 2019년 5월 15일
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
Stephen23
Stephen23 2015년 10월 12일
편집: Stephen23 2015년 10월 12일
Accessing fields of non-scalar structures is covered quite well in the documentation:
It is also useful to understand comma separated lists:

댓글을 달려면 로그인하십시오.

채택된 답변

Thorsten
Thorsten 2015년 10월 12일
age = [data.age];
agegt18 = age(age>18);

추가 답변 (2개)

Walter Roberson
Walter Roberson 2015년 10월 12일
v = [data.age];
data(v>18)
Or more compactly,
data([data.age]>18)
  댓글 수: 2
Mr M.
Mr M. 2015년 10월 12일
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 2015년 10월 12일
편집: Thorsten 2015년 10월 12일
Use
data(strcmp({data.gender}, 'male'))

댓글을 달려면 로그인하십시오.


Tin Aye Chit Chit
Tin Aye Chit Chit 2019년 5월 15일
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?

카테고리

Help CenterFile Exchange에서 Structures에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by