MATLAB:如何将具有相同大小字段值的结构数组组合成一个结构

MATLAB: How do I combine a structure array with same size field values into one structure

我有一个结构数组,其中每个同名字段的大小都相同。我想将数组中的每个字段合并为一个字段。例如:

A(1).x = [1 2 3];
A(1).y = [4 5 6];
A(2).x = [7 8 9];
A(2).y = [10 11 12];

我希望新结构是

B.x = [1 2 3;
       7 8 9];
B.y = [4 5 6;
       10 11 12];

如果这样更容易的话,这些也可以是结构单元。

A.x 生成以逗号分隔的值列表。您可以在函数调用中使用这个以逗号分隔的列表,在这种情况下,每个值都被视为一个单独的参数。这非常有用,因为您可以将其传递到对 cat 的调用中以连接值:

B.x = cat(1, A.x);

您必须对每个字段执行相同的操作。要自动执行此操作,您可以遍历 fieldnames(A):

for name = fieldnames(A).'
   B.(name{1}) = cat(1, A.(name{1}));
end