【问题标题】:MATLAB structure mergeMATLAB结构合并
【发布时间】:2011-05-04 10:44:15
【问题描述】:

我有以下结构

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

【问题讨论】:

    标签: matlab matlab-struct


    【解决方案1】:

    抱歉,我误解了您的问题 - 这里再试一次。

    也许有更简单的方法,但您可以使用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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-05-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-05-16
        • 2020-11-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多