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

申し訳ありませんが、私はあなたの質問を誤解していました - ここでもう一度試してください。

もっと簡単な方法があるかもしれませんが、dataを使用してすべてのフィールドのリストを取得できますmynames=fieldnames(data)。次に、それらすべてをループして、次のように共通の構造体に割り当てることができます。

combineddata.(mynames{i})=[data1.(mynames{i}); data2.(mynames{i}); data3.(mynames{i})];
于 2011-05-04T11:06:27.110 に答える
3

関数FIELDNAMESCELLFUN、およびCELL2STRUCTを使用した 1 つのソリューションを次に示します。

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 に答える