Azzera filtri
Azzera filtri

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

4 visualizzazioni (ultimi 30 giorni)
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 Commenti
Matt J
Matt J il 21 Apr 2022
Please attach sStruct and also clarify "by entering the first colnmn names show the fields".
Emily
Emily il 21 Apr 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.

Accedi per commentare.

Risposta accettata

Matt J
Matt J il 21 Apr 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 Commenti
Matt J
Matt J il 22 Apr 2022
You're welcome, bu please Accept-click to indicate that it worked.

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su Structures in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by