Fusion de structure MATLAB
-
28-10-2019 - |
Question
J'ai la structure suivante
data =
id: [143x1 double]
datenum: [143x1 double]
Timestamp: {143x1 cell}
Min_F1_USA_40__u: [143x1 double]
Max_F1_USA_40__u: [143x1 double]
Mean_F1_USA_40__u: [143x1 double]
Stddev_F1_USA_40__u: [143x1 double]
MeanVals_F1_USA_40__u: [143x1 double]
a0_F1_USA_40__u: [143x1 double]
a1_F1_USA_40__u: [143x1 double]
a2_F1_USA_40__u: [143x1 double]
a3_F1_USA_40__u: [143x1 double]
a4_F1_USA_40__u: [143x1 double]
Donc, j'ai plus de 50 champs dans la structure
J'ai 3 autres structures avec la même structure et je souhaite fusionner cette structure
Quand j'aurai 3 structures, j'obtiendrai la structure suivante
data =
id: [429x1 double]
datenum: [429x1 double]
Timestamp: {429x1 cell}
Min_F1_USA_40__u: [429x1 double]
Max_F1_USA_40__u: [429x1 double]
Mean_F1_USA_40__u: [429x1 double]
Stddev_F1_USA_40__u: [429x1 double]
.
.
.
La solution
Désolé, j'avais mal compris votre question - voici un deuxième essai.
Il existe peut-être un moyen plus simple, mais vous pouvez obtenir une liste de tous les champs de data
en utilisant mynames=fieldnames(data)
.Vous pouvez ensuite les parcourir tous et les affecter à une structure commune comme celle-ci:
combineddata.(mynames{i})=[data1.(mynames{i}); data2.(mynames{i}); data3.(mynames{i})];
Autres conseils
Voici une solution utilisant les fonctions FIELDNAMES , CELLFUN et CELL2STRUCT :
data = [data1 data2 data3 data4]; %# Create a structure array of your data
names = fieldnames(data); %# Get the field names
cellData = cellfun(@(f) {vertcat(data.(f))},names); %# Collect field data into
%# a cell array
data = cell2struct(cellData,names); %# Convert the cell array into a structure
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow