Using loop to extract fields from a struct
Afficher commentaires plus anciens
Hello
I am using the following code:
names = fieldnames(data); % extract names of features
for i = 1:5
class(i) = data.names{i};
end
where data is a struct, and names obviously contains the fieldnames. What I basically want to do is to extract certain field from data, and put them into an array. How can this be done (my attribution in the second last line does not work). Many thanks
1 commentaire
Jan
le 28 Fév 2017
Avoid to shadow the Matlab command "class" by a varaible.
Réponses (3)
KSSV
le 28 Fév 2017
N = 10 ;
data = struct ;
for i = 1:N
data(i).name = randseq(5) ;
data(i).Age = randi(100,1) ;
data(i).city = randseq(10) ;
end
% pick the Ages
fields = fieldnames(data); % extract names of features
Age_array = zeros(N,1) ;
for i = 1:N
Age_array(i) = getfield(data(i), fields{2});
end
1 commentaire
APARNA HARICHANDRAN
le 16 Août 2020
Thanks a lot! This works
maxroucool
le 19 Oct 2017
Hi MiauMiau,
I am little late, but i guess I have the same problem. If names were numbers, the answer would be :
class = [data.names];
But in our case Names are letters and it generates a single var concatenating all the names together... Does anyone has the solution?
Thanks,
Max
3 commentaires
Jan
le 19 Oct 2017
@maxroucool: Please do not hijack another thread by inserting a new question in the field for answers. Open a new thread instead - thanks.
Perhaps you mean: result = {data.names}
maxroucool
le 19 Oct 2017
Hi Jan,
I did not hijack, since I have the same problem and it was not answered... Anyway, thanks for your answer it's perfect!
Max
Guillaume
le 19 Oct 2017
@maxroucoul,
The box where you wrote your question is clearly marked "Answer this question". You are not answering the question, therefore you shouldn't have used that box.
The only way people get rewarded (increase in reputation) for answering other people questions is when people mark their answer as accepted or vote for their answer. Because you hijacked the answer box, we're forced to answer you in a comment which cannot be voted on or accepted. Hence we don't get any reward.
So please, in the future ask your question as a new question. If it relates to another question you can link to it in your own question and leave a comment in the other question linking to yours.
Catégories
En savoir plus sur Loops and Conditional Statements dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!