Get structure elements across fields

1 vue (au cours des 30 derniers jours)
Oyeniyi
Oyeniyi le 28 Déc 2014
Commenté : Oyeniyi le 28 Déc 2014
I have a 1-by-n structure with -m- fields. All the elements of the structure are single numbers.
I want to get all the elements across any particular 'row' of the structure as a vector.
For example, I need to access [struct(n).field1 struct(n).field2 ... struct(n).fieldm] without having to go through the individual fields.

Réponse acceptée

Mohammad Abouali
Mohammad Abouali le 28 Déc 2014
Modifié(e) : Mohammad Abouali le 28 Déc 2014
% Making sample data
s(1).field1=1;
s(1).field2=2;
s(1).field3=3;
s(2).field1=4;
s(2).field2=5;
s(2).field3=6;
% converting to regular array.
sTable=struct2table(s);
sArray=table2array(sTable)
sArray =
1 2 3
4 5 6
alternatively, you can also use struct2cell and cell2mat
sCell=struct2cell(s);
sCell=squeeze(sCell);
sArray=cell2mat(sCell)'
sArray =
1 2 3
4 5 6

Plus de réponses (1)

Azzi Abdelmalek
Azzi Abdelmalek le 28 Déc 2014
Modifié(e) : Azzi Abdelmalek le 28 Déc 2014
Another way:
d=struct('f1',num2cell(randi(10,1,10)),'f2',num2cell(randi(10,1,10)),'f3',num2cell(randi(10,1,10)))
n=4
e=d(n)
nf=fieldnames(d)
for k=1:numel(nf)
v(k,1)=e.(nf{k})
end
  1 commentaire
Oyeniyi
Oyeniyi le 28 Déc 2014
Thanks; I was trying to avoid using a loop.

Connectez-vous pour commenter.

Catégories

En savoir plus sur Structures dans Help Center et File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by