Borrar filtros
Borrar filtros

How do I make a script to show the field names of struct in a struct

4 visualizaciones (últimos 30 días)
I currently have the code below to list out only the structs.
sTable=struct2table(s);
sStruct=sTable(:,vartype('struct'));
Inside the table there are 3 1x1 structs that I wanted to access.
I can get there via clicking on the variables workspace or using individual fieldnames
a=fieldnames(sStruct.v1_abc)
but I wanted to have a script to automatically access it by entering the first colnmn names show the fields.
Thanks in advance.
  2 comentarios
Matt J
Matt J el 21 de Abr. de 2022
Please attach sStruct and also clarify "by entering the first colnmn names show the fields".
Emily
Emily el 21 de Abr. de 2022
a1='abcd';
a2=[1 2 3];
s.a=char(a1,a2);
s.b.a = ones(3);
s.b.b = eye(4);
s.c.c = magic(5);
s.d=char(a2,a1);
For example, for the s Struct above I want it to show the fieldnames for s.b and s.c without going to the variables workspace.

Iniciar sesión para comentar.

Respuesta aceptada

Matt J
Matt J el 21 de Abr. de 2022
Something like this?
a1='abcd';
a2=[1 2 3];
s.a=char(a1,a2);
s.b.a = ones(3);
s.b.b = eye(4);
s.c.c = magic(5);
s.d=char(a2,a1);
showsubfields(s,'b','c')
Field: b a b Field: c c
function showsubfields(S,varargin)
for i=1:numel(varargin)
fn=varargin{i};
if ~isstruct(S.(fn)); continue; end
disp("Field: "+fn)
subfns=fieldnames(S.(fn));
disp(char(" "+subfns))
end
end
  6 comentarios
Emily
Emily el 22 de Abr. de 2022
That's perfect! Thank you so much!
Matt J
Matt J el 22 de Abr. de 2022
You're welcome, bu please Accept-click to indicate that it worked.

Iniciar sesión para comentar.

Más respuestas (0)

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