Effacer les filtres
Effacer les filtres

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

4 vues (au cours des 30 derniers jours)
Emily
Emily le 21 Avr 2022
Commenté : Matt J le 22 Avr 2022
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 commentaires
Matt J
Matt J le 21 Avr 2022
Please attach sStruct and also clarify "by entering the first colnmn names show the fields".
Emily
Emily le 21 Avr 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.

Connectez-vous pour commenter.

Réponse acceptée

Matt J
Matt J le 21 Avr 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 commentaires
Emily
Emily le 22 Avr 2022
That's perfect! Thank you so much!
Matt J
Matt J le 22 Avr 2022
You're welcome, bu please Accept-click to indicate that it worked.

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Structures dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by