Convert a struct to excel file

7 views (last 30 days)
Afaf Arfaoui
Afaf Arfaoui on 6 Jul 2018
Commented: Afaf Arfaoui on 6 Jul 2018
I have a struct
The "perSubjectScores" contains two fields
and I want to exract the data in the first one
As you can see the names are not generic, so I find it hard to extract the subject scores for all the rows of the struct "scores"
What is the best solution to do it.
  1 Comment
Jan
Jan on 6 Jul 2018
Edited: Jan on 6 Jul 2018
The fieldnames are cruel.
scores(:).perSubjectScores.perSubjectRestrospectiveZScored
This is too redundant to be clear. What about:
scores(:).Subject.RestroZ
?

Sign in to comment.

Answers (1)

Jan
Jan on 6 Jul 2018
What about a simple loop?
Result = cell(numel(scores), 2);
for k = 1:numel(scores)
F = scores(k).perSubjectScores.perSubjectRestrospectiveZScored;
Result{k, 1} = fieldnames(F);
Result{k, 2} = cell2mat(struct2cell(F));
end
Afterwards a call to cat(1, Result{:,1}) should create a list of all subject names. Unfortunately I'm not really sure, if this works correctly, because I cannot follow the description of your data structure completely. But the general method should get clear and I hope you can adjust it to your needs.
I strongly recommend to simplify the naming scheme. It does not increase the clarity to mention in each level of the nested struct, that the value concern a "scoring". Too exhaustive names for variables or fields decrease the readability and increase the chance of confusion and typos.

Categories

Find more on Structures in Help Center and File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!