Get structure elements across fields

4 visualizaciones (últimos 30 días)
Oyeniyi
Oyeniyi el 28 de Dic. de 2014
Comentada: Oyeniyi el 28 de Dic. de 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.

Respuesta aceptada

Mohammad Abouali
Mohammad Abouali el 28 de Dic. de 2014
Editada: Mohammad Abouali el 28 de Dic. de 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

Más respuestas (1)

Azzi Abdelmalek
Azzi Abdelmalek el 28 de Dic. de 2014
Editada: Azzi Abdelmalek el 28 de Dic. de 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 comentario
Oyeniyi
Oyeniyi el 28 de Dic. de 2014
Thanks; I was trying to avoid using a loop.

Iniciar sesión para comentar.

Categorías

Más información sobre Structures en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by