我想组合两个具有不同字段名称的结构。
例如,从以下内容开始:
A.field1 = 1;
A.field2 = 'a';
B.field3 = 2;
B.field4 = 'b';
我想拥有:
C.field1 = 1;
C.field2 = 'a';
C.field3 = 2;
C.field4 = 'b';
有没有比使用“字段名”和 for 循环更有效的方法?
EDIT:假设在字段名称冲突的情况下我们优先考虑A
.
没有碰撞,你可以做
M = [fieldnames(A)' fieldnames(B)'; struct2cell(A)' struct2cell(B)'];
C=struct(M{:});
这是相当有效的。然而,struct
重复字段名的错误,并使用预先检查unique
会降低性能,以至于循环会更好。但它看起来是这样的:
M = [fieldnames(A)' fieldnames(B)'; struct2cell(A)' struct2cell(B)'];
[tmp, rows] = unique(M(1,:), 'last');
M=M(:, rows);
C=struct(M{:});
您可以通过假设没有冲突并在调用周围使用 try/catch 来制定混合解决方案struct
优雅地降级为冲突处理案例。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)