Vertical concatenation of structure fields
Mostra commenti meno recenti
Hi,
I have a structure 'all' which has 45 fields with names 'day_X' where X goes from 1 to 45. Each 'day_X' level has 19 fields and it is these fields I want to concatenate. The fields are all vectors, and each Day_X struct has the same structure (fieldnames).
In other words, I want to vertically concatenate all.day_1.field1 through all.day_45.field1 , for each field. Is there an efficient way of doing this i.e., without a loop? I've tried numerous things, including a loop, but I know this can probably be done in a few lines.
Thanks in advance.
Risposta accettata
Più risposte (1)
Guillaume
il 23 Set 2014
First of all, do not name your structure all as that shadows the name of a very useful matlab function.
Secondly, having a structure the way you've done it a bad idea (as you've just found out). You should have made the day field a structure array and the same with the field field.
Anyway, to answer your question:
c = cellfun(@(fn) all.(fn).field1, fieldnames(all), 'UniformOutput', false);
vertfield1 = vertcat(c{:});
1 Commento
Initial Conditions
il 23 Set 2014
Categorie
Scopri di più su Creating and Concatenating Matrices in Centro assistenza e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!