MATLAB структура слияния - PullRequest
4 голосов
/ 04 мая 2011

У меня есть следующая структура

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 голосов
/ 04 мая 2011

Вот одно решение с использованием функций FIELDNAMES , CELLFUN и CELL2STRUCT :

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
3 голосов
/ 04 мая 2011

Извините, я неправильно понял ваш вопрос - вот вторая попытка.

Возможно, есть более простой способ, но вы можете получить список всех полей в data, используя mynames=fieldnames(data). Затем вы можете просмотреть их все и назначить их общей структуре, подобной этой:

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