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

2 回答 2

3

对不起,我误解了你的问题 - 这里再试一次。

也许有一种更简单的方法,但是您可以获得datausing中所有字段的列表mynames=fieldnames(data)。然后,您可以遍历它们并将它们分配给一个公共结构,如下所示:

combineddata.(mynames{i})=[data1.(mynames{i}); data2.(mynames{i}); data3.(mynames{i})];
于 2011-05-04T11:06:27.110 回答
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
于 2011-05-04T14:05:07.850 回答