MATLAB结构合并

时间:2011-05-04 10:44:15

标签: matlab matlab-struct

我有以下结构

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]

所以,我在struct

中有超过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]
        .
        .
        .

2 个答案:

答案 0 :(得分:3)

抱歉,我误解了你的问题 - 这是第二次尝试。

也许有一种更简单的方法,但您可以使用data获取mynames=fieldnames(data)中所有字段的列表。然后,您可以循环遍历它们并将它们分配给这样的公共结构:

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

答案 1 :(得分:3)

以下是使用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