2011-05-04 60 views
4

,我有以下結構MATLAB結構撤併

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] 

所以,我必須在結構超過50場

我還有其他3結構具有相同的結構,我想合併這個結構

當我有3個結構,我會得到下面的結構

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] 
     . 
     . 
     . 

回答

3

所以謝謝,我誤解了你的問題 - 這裏再試一次。

也許有一個更簡單的方法,但您可以使用mynames=fieldnames(data)獲得data中的所有字段的列表。然後,您可以通過他們的所有循環,並將它們分配到這樣一個共同的結構:

combineddata.(mynames{i})=[data1.(mynames{i}); data2.(mynames{i}); data3.(mynames{i})]; 
2

下面是一個使用功能FIELDNAMESCELLFUNCELL2STRUCT一個解決方案,以及:

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