2011-05-04 64 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