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

3 ビュー (過去 30 日間)
Emily
Emily 2022 年 4 月 21 日
コメント済み: Matt J 2022 年 4 月 22 日
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 件のコメント
Matt J
Matt J 2022 年 4 月 21 日
Please attach sStruct and also clarify "by entering the first colnmn names show the fields".
Emily
Emily 2022 年 4 月 21 日
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.

サインインしてコメントする。

採用された回答

Matt J
Matt J 2022 年 4 月 21 日
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 件のコメント
Emily
Emily 2022 年 4 月 22 日
That's perfect! Thank you so much!
Matt J
Matt J 2022 年 4 月 22 日
You're welcome, bu please Accept-click to indicate that it worked.

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeStructures についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by