我有以下结构
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]
所以,我在struct
中有超过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]
.
.
.
答案 0 :(得分:3)
抱歉,我误解了你的问题 - 这是第二次尝试。
也许有一种更简单的方法,但您可以使用data
获取mynames=fieldnames(data)
中所有字段的列表。然后,您可以循环遍历它们并将它们分配给这样的公共结构:
combineddata.(mynames{i})=[data1.(mynames{i}); data2.(mynames{i}); data3.(mynames{i})];
答案 1 :(得分:3)
以下是使用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