MATLAB 结构体合并

4

我有以下结构体

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]
        .
        .
        .
2个回答

3

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

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

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

3
以下是使用函数FIELDNAMES、CELLFUN和CELL2STRUCT的解决方案:

这里是一个解决方案,使用函数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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接