Convert a struct to excel file

8 visualizaciones (últimos 30 días)
Afaf Arfaoui
Afaf Arfaoui el 6 de Jul. de 2018
Comentada: Afaf Arfaoui el 6 de Jul. de 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 comentario
Jan
Jan el 6 de Jul. de 2018
Editada: Jan el 6 de Jul. de 2018
The fieldnames are cruel.
scores(:).perSubjectScores.perSubjectRestrospectiveZScored
This is too redundant to be clear. What about:
scores(:).Subject.RestroZ
?

Iniciar sesión para comentar.

Respuestas (1)

Jan
Jan el 6 de Jul. de 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.

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