How to add (combine) together two structures with the same fields?

268 ビュー (過去 30 日間)
Benson Gou
Benson Gou 2021 年 6 月 11 日
編集済み: dleal 2022 年 4 月 20 日
Dear All,
I have two structures A and B with the same fields. How can I combine them together to form a new structure?
For example, A = struct('field1', array1, 'field2', array2); B = struct('field1', array3, 'field2', array4). A and B have the same fields 'field1' and 'field2'. I want to combine A and B together to obtain structure C = struct('field1', [array1; array3], 'field2', [array2; array4]). array1 and array3 have the same number of columns, and array2 and array4 have the same number of columns.
Thanks.
Benson
  2 件のコメント
Geoff Hayes
Geoff Hayes 2021 年 6 月 11 日
Benson - what should the new structure look like? If A and B have the same fields, then does that mean that the combined A and B have array fields? Please illustrate with a small example.
Benson Gou
Benson Gou 2021 年 6 月 11 日
Hi, Geoff,
Please see my question again.
Thanks.
Benson

サインインしてコメントする。

採用された回答

KSSV
KSSV 2021 年 6 月 11 日
clc; clear ;
s1.name = 'Tom' ;
s1.sex = 'm';
s1.age = 25 ;
s2.name = 'Harry' ;
s2.sex = 'f';
s2.age = 26 ;
% Structure array
s = [s1 ; s2]
% Single structure
S = struct ;
aField = fields(s1);
for i = 1:3
S.(aField{i}) = {s1.(aField{i}) s2.(aField{i})} ;
end
S
  4 件のコメント
Stephen23
Stephen23 2021 年 6 月 11 日
Note that the loop does not concatenate the field data as your qustion shows, but instead nests the field data within a 1x2 cell array.
dleal
dleal 2022 年 4 月 20 日
編集済み: dleal 2022 年 4 月 20 日
Hi, I have a similar question..
given two structs with numerical values:
S1 = struct; S2 = struct;
S1.A = [1,2]; S1.B = [3, 4];
S2.A = [9,10]; S2.B = [11,12];
is there a way to combine them into S3 so that S3.A = [1,2,9,10] and S3.B = [3,4,11,12]?
I would just do it with a for loop, but I wonder if there is a way that might be less expensive:
S3.A = [];
S3.B = [];
fNames = fieldnames(S1);
for jj = 1:numel(fNames)
S3.(fNames(jj) = [S1.(fNames(jj)) , S2.(fNames(jj)) ];
end

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeString Parsing についてさらに検索

タグ

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by