質問

次の構造があります

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つのstructがある場合、次の構造が表示されます

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]
        .
        .
        .
役に立ちましたか?

解決

申し訳ありませんが、私はあなたの質問を誤解していました - ここで二度目の試み。

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

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

他のヒント

関数を使用したソリューションの1つを次に示します フィールド名, 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
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top